2021.09.01 shopee新加坡后端 笔试经验
30道选择题 有单选有多选 会标注清楚
都是基础知识 但是覆盖面很广 操作系统 计算机网络 数据库 算法时间复杂度 智力题(比如25匹马选前3)…………
两道编程题,特别简单,轻松全A的那种
第一题:
给一个数a>0,输出一个比它小的最大整数b,要求a和b中所有数字是同一套。。a可能长达1000位。例如输入165 输出156, 输入23 输出-1。。。
#include<iostream>
#include<algorithm>
#include<string>
using namespace std;
bool cmp(char a, char b);
int main(){
string s="";
cin>>s;
char tmp='0';
int tmp_i=0,now=0;
for(int i=s.size()-1;i>0;i--){
if(s[i]>tmp){
tmp=s[i];
tmp_i=i;
}
if(s[i-1]>tmp){
now=i-1;
break;
}
}
char my_tmp=s[now];
s[now]=s[tmp_i];
s[tmp_i]=my_tmp;
sort(s.begin()+now+1,s.end(),cmp);
if(now==0)
cout<<0<<endl;
else
cout<<s<<endl;
return 0;
}
bool cmp(char a, char b){
return a>b;
} 第二题: 给一个数,输出以千划分的形式。。。例如1234567,输出1,234,567
#include<iostream>
#include<vector>
using namespace std;
int main(){
long long n=0;
cin>>n;
vector<char> data;
long long tmp=0,flag=0;
while(n/10!=0){
tmp=n%10;
n/=10;
flag++;
data.push_back(char(tmp+'0'));
if(flag==3){
data.push_back(',');
flag=0;
}
}
data.push_back(char(n+'0'));
for(int i=data.size()-1;i>=0;i--)
cout<<data[i];
return 0;
}
查看11道真题和解析
