位置: IT常识 - 正文

20230420-上海广策信息技术笔试记录(上海广为)

编辑:rootadmin
20230420-上海广策信息技术笔试记录 1.小括号的有效性判断

推荐整理分享20230420-上海广策信息技术笔试记录(上海广为),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:上海策广餐饮有限公司,上海广岑投资中心(有限合伙),上海广宣,上海广敞网络科技有限公司,上海广敞网络科技有限公司,上海广宣,上海广敞网络科技有限公司,上海广敞网络科技有限公司,内容如对您有帮助,希望把文章链接给更多的朋友!

LC的简单题,不知道为什么一直有3道用例错,枯了。

bool isValid(string s) { stack<int> st; for(int i = 0; i < s.size(); i++){ // prevent cases like '))' if(st.empty()){ st.push(s[i]); } else if(s[i] == '{' || s[i] == '[' || s[i] == '('){ st.push(s[i]); } else if(!st.empty() && s[i] == '}' && st.top() == '{'){ st.pop(); } else if(!st.empty() && s[i] == ')' && st.top() == '('){ st.pop(); } else if(!st.empty() && s[i] == ']' && st.top() == '['){ st.pop(); } else{ return false; } } return st.empty(); }2.统计n的阶乘结果末尾0的个数

想法:两步,一.实现大数乘法,二.通过阶乘乘法求出阶乘结果字符串,然后遍历统计字符串末尾0的个数。

然而暴力解法肯定过不了,不过当时大数乘法几个月没写了,唉。。。

先放个大数乘法的实现吧:

string multiply(string num1, string num2) { if(num1 == "0" || num2 == "0") return "0"; vector<int> res(num1.size() + num2.size(), 0); for(int j = num2.size() - 1; j >= 0; j--){ for(int i = num1.size() - 1; i >= 0; i--){ int a = num1[i] - '0'; int b = num2[j] - '0'; int tmp = res[i + j + 1] + a * b; res[i + j + 1] = tmp % 10; res[i + j] += tmp / 10; } } string ans;int i = 0; while(res[i] == 0 && i < res.size()){ i++; } for(; i < res.size(); i++){ ans.push_back(res[i] + '0'); } return ans; }

真正答案:

20230420-上海广策信息技术笔试记录(上海广为)

https://blog.51cto.com/woodpecker/1955915

3.不用不用if,条件表达式,switch等判断比较a,b较大者

请写一个程序,不用if,条件表达式,switch等判断 语句,找出两个整数a,b中的较大者。(a≠b) ·若a>b,输出a large ·若a<b,输出b large 示例1

输入:a=1,b=2输出:"b large"

示例2

输入:a=2,b=1输出:"a large"

脑筋急转弯,半天想不出来,其实当时也想到位运算的。。

#include<iostream>#include<bits/stdc++.h>using namespace std;int main(){ int a = 0, b = 1; vector<string> res = {"a large", "b large"}; int c = a - b; c = c >> (sizeof(int) * 8 - 1); //取得相减结果的二进制最高位, 0为正,1为负 cout << res[c] << endl; }

答案出处:https://blog.csdn.net/weixin_37823499/article/details/125786533

4.特殊的排序

特定一个字符串s,该字符串仅由字母与数字组成,即a-z,A-Z,0-9组成,

现在要求字母部分按降序排序,数字部分按照升序排 序,并且不改变之前字母和数字所在的位置,即字母之 创在该位置,排序后在该位置的依旧是字母。 要求不得使用编程语言自带的排序函数 示例: 输入,special——sort(ba3e2d59c) 输出,ed2c3b59a

思路:AC,其实就是自己实现一个快速排序,分别把数字字符串和字母字符串遍历提取出来,然后再遍历主串,数字串和字母串设两个指针在开头,主串遍历到字母则字母串指针值拷进去,然后前进一位;主串遍历到数字则数字串指针值拷进去,然后前进一位;

挺简单的,难怪只有10分。

#include<iostream>#include<bits/stdc++.h>using namespace std;int main(){ string cas = "ba3e2d59c"; string num, str; for(int i = 0; i < cas.size(); i++){ if(isalpha(cas[i])){ str.push_back(cas[i]); } else{ num.push_back(cas[i]); } } //题目忘记截代码了 方便期间省略了排序代码 sort(num.begin(),num.end()); sort(str.begin(),str.end()); int i = str.size() - 1, j = 0; for(int k = 0; k < cas.size(); k++){ if(isalpha(cas[k])){ cas[k] = str[i--]; } else{ cas[k] = num[j++]; } } cout << cas << endl;}

总结:我太菜了

本文链接地址:https://www.jiuchutong.com/zhishi/299655.html 转载请保留说明!

上一篇:Vue路由导航报错:NavigationDuplicated: Avoided redundant navigation to current location解决方法(vue的路由跳转了,可是页面没有变化)

下一篇:手撕前端面试题【javascript~ 总成绩排名、子字符串频次统计、继承、判断斐波那契数组等】(前端面试题校招)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络