华为4.15笔试

难是不难,但是感觉逻辑比较复杂。我是非科班出身,写的也很复杂。做了两道,第三道没时间看了。
第一道  AC:
#include <iostream>
#include <string>
#include <vector>
#include <stack>
#include <algorithm>
using namespace std;
int main(){
    string all;
    while(cin >> all){
        if(all.size() < 1){
            cout << "error.0001" << endl;
            continue;
        }
        vector<string> names;
        int pre = 0;
        for(int i = 0; i <= all.size(); i++){
            if(all[i] >= 'A' && all[i] <= 'Z'){
                if(i == 0 || all[i-1] == ',')
                    continue;
                else{
                    cout << "error.0001" << endl;
                    break;
                }
            }
            if(i == 0 || all[i-1] == ','){
                if(all[i] < 'A' || all[i] > 'Z'){
                    break;
                }
            }
            if(all[i] == ',' || all[i] == '\0'){
                names.push_back(all.substr(pre, i-pre));
                pre = i+1;
                continue;
            }
            if(all[i] < 'a' || all[i] > 'z'){
                cout << "error.0001" << endl;
                break;
            }
        }
        if(names.size() < 1){
            cout << "error.0001" << endl;
            continue;
        }
        sort(names.begin(), names.end());
        int vote = 0;
        int cnt = 0;
        string rnt;
        string tmp = names[0];
        for(int j = 0; j < names.size(); j++){
            if(names[j] == tmp){
                cnt++;
            } else{
                tmp = names[j];
                cnt = 1;
            }
            if(cnt > vote){
                vote = cnt;
                rnt = names[j];
            }
        }
        cout << rnt << endl;
    }
    return 0 ;
}
第二道  AC:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
    string keyword;
    string inform;
    while(cin >> keyword >> inform){
        vector<string> items;
        int pre = 0;
        for(int i = 0; i <= inform.size(); i++){
            if(inform[i] == ']'){
                items.push_back(inform.substr(pre, i-pre+1));
                pre = i+2;
            }
        }
        if(items.size() < 1){
            cout << "FAIL" << endl;
            continue;
        }
        vector<string> name;
        vector<string> addr;
        vector<string> mask;
        vector<string> val;
        for(int j = 0; j < items.size(); j++){
            if(items[j].find("addr=") != items[j].npos){
                int cnt = items[j].find("addr=") + 5;
                if(items[j][cnt] != '0')
                    continue;
                if(items[j][cnt+1] == 'x' || items[j][cnt+1] == 'X'){
                    int start = cnt;
                    for(; items[j][cnt] != ','; cnt++);
                    addr.push_back(items[j].substr(start, cnt-start));
                } else
                    continue;
            } else
                continue;
            if(items[j].find("mask=") != items[j].npos){
                int cnt = items[j].find("mask=") + 5;
                if(items[j][cnt] != '0')
                    continue;
                if(items[j][cnt+1] == 'x' || items[j][cnt+1] == 'X'){
                    int start = cnt;
                    for(; items[j][cnt] != ','; cnt++);
                    mask.push_back(items[j].substr(start, cnt-start));
                } else
                    continue;
            } else
                continue;
            if(items[j].find("val=") != items[j].npos){
                int cnt = items[j].find("val=") + 4;
                if(items[j][cnt] != '0')
                    continue;
                if(items[j][cnt+1] == 'x' || items[j][cnt+1] == 'X'){
                    int start = cnt;
                    for(; items[j][cnt] != ']'; cnt++);
                    val.push_back(items[j].substr(start, cnt-start));
                } else
                    continue;
            } else
                continue;
            for(int k = 0; k < items[j].size(); k++){
                if(items[j][k] == '['){
                    name.push_back(items[j].substr(0, k));
                }
            }
        }
        bool has = false;
        for(int m = 0; m < name.size(); m++){
            if(name[m] == keyword){
                has = true;
                cout << addr[m] << " " << mask[m] << " " << val[m] << endl;
            }
        }
        if(has == false){
            cout << "FAIL" << endl;
            continue;
        }
    }
    return 0;
}


#华为笔试##华为##笔试题目#
全部评论
大佬平时怎么练算法题啊,做这仨我觉得我太费劲了
点赞 回复 分享
发布于 2020-04-15 21:34
请问楼主这个是软件题吗,22号笔试,试卷只说了是软件题,想问一下题型是只有三道编程题嘛还是有客观题
点赞 回复 分享
发布于 2020-04-20 15:54
请问楼主还记得题目是什么吗?可以分享一下不
点赞 回复 分享
发布于 2020-04-20 21:31
请问题目怎么说是需要用到输入输出流?华为题库有些可以不用,有些不可以,有时候报错输入输出不符合我都不知道怎么改?
点赞 回复 分享
发布于 2020-04-21 16:59

相关推荐

如题,字节跳动怎么才能看到自己的面评,找hr说看不到
SoulStar:自己应该看不到,这个是字节比较保密的信息,之前有mentor加我,说他能看到,但是不能给我说,给我说了他可能就要被辞退了
点赞 评论 收藏
分享
4 5 评论
分享
牛客网
牛客企业服务