首页 > 2021.09.01 shopee新加坡后端 笔试经验
头像
Silviayun2021
编辑于 2021-09-03 12:21
+ 关注

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;
}



全部评论

(3) 回帖
加载中...
话题 回帖