2018华为校招软件,c++做了两道不知道对不对

  1. 字符替换

    #include<iostream>
    #include<string>
    #include<math.h>
    #include<vector>
    using namespace std;
    int main()
    {
     vector vsit;
     char ch1 = '9', ch2 = '8';
     string str = "9897899";
     string str1 = str;
     cout << str;
     int num = 0;
     num = count(str1.begin(), str1.end(), ch1);
     size_t strIter = str1.size();
     while(strIter) {        
         strIter = str1.rfind(ch1,strIter-1);
         vsit.push_back(strIter);
     }
     //vector中存放目标的位置    
     for (int i = 1; i <pow(2,num); i++) {
         int n = 0, count = 0, j = i;
         str1 = str;
         while (j) {
             j = j >> 1;
             count++;
         }//统计出二进制的位数
         while (count >= n+1) {
             if (i & int(pow(2, n++))) {        
                 str1[vsit[n - 1]] = ch2;                
             }                
         }
         cout << "," << str1;        
     }
     system("pause");
    }
  2. 数字统计
    #include<iostream>
    #include<string>
    #include<vector>
    #include<cctype>
    #include<algorithm>
    #include<map>
    using namespace std;
    {
    vector<int> vs;
    string str = "5 2 4 5 56 56 8 9 2 3 4 5 6 3 45 5 56 9 0 9 9 0 9 0 9 0 8 2123 2123 223 223 2123 223 2123 8 9 8";
    string str1;
    int num = 0;
    map<int, int> numMap;
    for (auto i : str) {
        if (isdigit(i))
            str1 += i;
        else {
            num = stoi(str1);
            vs.push_back(num);
            str1 = "";
        }
    }    
    num = stoi(str1);
    vs.push_back(num);
    sort(vs.begin(), vs.end());
    for (auto j : vs) {        
        numMap[j] += 1;
    }
    auto map_it = numMap.cbegin();
    string ch1, ch2;
    int n = 0;
    while (map_it != numMap.cend()) {
        ch1 = to_string(map_it->first);
        ch2 = to_string(map_it->second);
        if(!n)
            cout << ch1 << " " << ch2 << " ";
        else
            cout << " " << ch1 << " " << ch2 << " ";
        ++map_it;
        n++;
    }
    system("pause");
    }
#华为#
全部评论
#include<string> #include<iostream> #include<vector> using namespace std; void replace(string &s, char torep, char rep,const vector<int> &vec,int index ) { if (index == vec.size() ) cout << s<<","; else { replace(s, torep, rep, vec, index+1); s[vec[index]] = rep; replace(s, torep, rep, vec, index + 1); s[vec[index]] = torep; } } int main() { string s; char torep,rep; cin >> s >> torep >> rep; vector<int> vec; for (int i = 0; i < s.size(); i++) { if (s[i] == torep) vec.push_back(i); } replace(s, torep, rep,vec,vec[0]); }
点赞 回复 分享
发布于 2017-09-20 22:54

相关推荐

点赞 评论 收藏
分享
真tmd的恶心,1.面试开始先说我讲简历讲得不好,要怎样讲怎样讲,先讲背景,再讲技术,然后再讲提升多少多少,一顿说教。2.接着讲项目,我先把背景讲完,开始讲重点,面试官立即打断说讲一下重点,无语。3.接着聊到了项目的对比学习的正样本采样,说我正样本采样是错的,我解释了十几分钟,还是说我错的,我在上一家实习用这个方法能work,并经过市场的检验,并且是顶会论文的复现,再怎么不对也不可能是错的。4.面试官,说都没说面试结束就退出会议,把面试者晾在会议里面,丝毫不尊重面试者难受的点:1.一开始是讲得不好是欣然接受的,毕竟是学习。2.我按照面试官的要求,先讲背景,再讲技术。当我讲完背景再讲技术的时候(甚至已经开始蹦出了几个技术名词),凭什么打断我说讲重点,是不能听出人家重点开始了?这也能理解,每个人都有犯错,我也没放心上。3.我自己做过的项目,我了解得肯定比他多,他这样贬低我做过的项目,说我的工作是错误的,作为一个技术人员,我是完全不能接受的,因此我就和他解释,但无论怎么解释都说我错。凭什么,作为面试官自己不了解相关技术,别人用这个方式work,凭什么还认为这个方法是错的,不接受面试者的解释。4.这个无可厚非,作为面试官,不打招呼就退出会议,把面试者晾着,本身就是有问题。综上所述,我现在不觉得第一第二点也是我的问题,面试官有很大的问题,就是专门恶心人的,总结面试官说教,不尊重面试者,打击面试者,不接受好的面试者,技术一般的守旧固执分子。有这种人部门有这种人怎么发展啊。最后去查了一下,岗位关闭了。也有可能是招到人了来恶心人的,但是也很cs
牛客20646354...:招黑奴啊,算法工程师一天200?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务