华为笔试2.7 4-15

这次笔试感觉有点难度,主要是华为的一些边界规则有点难顶。
第一题,普通排序题,AC。(不记得map的sort,放到vector里面有点难写。)
#include <algorithm>
#include<iostream>
#include<string>
#include<map>
#include<vector>
using namespace std;
int main()
{
    string s;
    cin>>s;
    map<string,int> mp;
    int i=0,size=s.size(),j;
    string cur;
    while(i<size)
    {
        j=i;cur="";
        if(s[i]<'A'||s[i]>'Z')
            {cout<<"error.0001"<<endl;return 0;}
        while(j<size&&s[j]!=',')
            {
                cur+=s[j];j++;
            }
        mp[cur]++;
        for(int i=1;i<cur.size();i++)
            if(cur[i]<'a'||cur[i]>'z')
                {cout<<"error.0001"<<endl;return 0;}
        i=j+1;
    }
    vector<vector<int>> v;map<int,int> mp2;map<int,string> mp3;
    int k=1;
    for(auto p=mp.begin();p!=mp.end();p++)
        {
            mp2[k]=p->second;
            mp3[k]=p->first;
            v.push_back({p->second,k});
            k++;
        }
    sort(v.begin(),v.end(),[&](vector<int> a,vector<int> b)
    {
        if(a[0]==b[0])
            return a[1]<b[1];
        return a[0]>b[0];
    });
    string res;int m=v[0][0];string c=mp3[v[0][1]];
    for(int i=0;i<v.size();i++)
        {
            if(v[i][0]<m)
                break;
            if(c>mp3[v[i][1]])
                c=mp3[v[i][1]];
        }
    cout<<c<<endl;
    system("pause");
    return 0;
}


第二题,字符串匹配,c++没有字符串分割函数写起来真的有点操蛋,几个规则要读懂,但是最后总算AC了。代码相当丑陋。
#include<iostream>
#include<string>
#include<map>
#include <vector>
#include<stdio.h>
using namespace std;
int main()
{
    string q,s;
    cin>>q;cin>>s;
    map<string,int> mp;
    mp[q]=1;mp["addr"]=1;mp["mask"]=1;mp["val"]=1;
    int i=0,j=0,size=s.size();
    string res,cur;vector<vector<string>> Res;
    int flag=1;
    while(i<size)
        {
            j=i;cur="";flag=1;
            vector<string> v;
            while(j<size&&s[j]!='[')
                {cur+=s[j];j++;}
            if(mp[cur]==0)
                flag=0;
            j++;int k=j;
            while(flag==1)
                {
                    cur="";
                    while(k<size&&s[k]!='=')
                        {cur+=s[k],k++;}
                    k++;
                    if(cur!="addr")
                        {flag=1;break;}
                    cur="";

                    while(k<size&&s[k]!=',')
                        {cur+=s[k];k++;}
                    k++;
                    v.push_back(cur);
                    if(cur[0]=='0'&&(cur[1]!='x'||cur[1]!='X'))
                        {;}
                    else{flag=1;break;}
                    cur="";
                    while(k<size&&s[k]!='=')
                        {cur+=s[k],k++;}
                    k++;
                    if(cur!="mask")
                        {flag=1;break;}
                    cur="";
                    while(k<size&&s[k]!=',')
                        {cur+=s[k];k++;}
                    k++;
                    v.push_back(cur);
                    if(cur[0]=='0'&&(cur[1]!='x'||cur[1]!='X'))
                        {;}
                    else{flag=1;break;}
                    cur="";
                    while(k<size&&s[k]!='=')
                        {cur+=s[k],k++;}
                    k++;
                    if(cur!="val")
                        {flag=1,j=k;break;}
                    cur="";
                    while(k<size&&s[k]!=']')
                        {cur+=s[k];k++;}
                    k++;
                    k++;
                    v.push_back(cur);
                    if(cur[0]=='0'&&(cur[1]!='x'||cur[1]!='X'))
                        {;}
                    else{flag=1;break;}
                    flag=-1;
                }
            if(flag==1)
                {
                    while(s[j]!=']') j++;
                    j++;
                }
            if(flag==0)
                {
                    while(j<size&&s[j]!=']')
                        j++;
                    j++;j++;
                }
            if(flag==-1)
                {
                    Res.push_back(v);
                    for(i=0;i<v.size()-1;i++)
                        cout<<v[i]<<" ";
                    cout<<v[i]<<"\r"<<endl;
                    j=k;
                }
            i=j;
        }
    if(Res.size()==0)
            cout<<"FAIL"<<endl;
    system("pause");
    return 0;
}


第三题,一个树到顶到叶子结点的距离,DFS,输入不知道说这个结点没有栈空间,不知道位置是有数字还是没有数字。最后70%难顶。
#include<iostream>
#include<vector>
#include<map>
using namespace std;
int R=0,NA=0;
int max_le=0;
map<int,vector<int>> mp;
map<int,int> mp1;int n;
void dfs(int k,vector<int> &vis,int le)
{
    if(mp[k].size()==0)
        max_le=max(max_le,le);
    int a,b;
    for(int i=0;i<mp[k].size();i++)
        {
            a=mp[k][i];b=mp1[a];
            if(b<=n)
                {NA=1;return;}
            if(vis[a]==1)
                {
                    R=1;
                    return ;
                }
            vis[a]=1;
            dfs(a,vis,le+b);
            if(R==1)
                return ;
            vis[a]=0;
        }
}
int main()
{
    cin>>n;int m=0;
    vector<int> vis(n,0);
    vector<int> v(n,0);
    for(int i=0;i<n;i++)
        cin>>v[i];
    int a,b;
    while(m<n)
    {
        cin>>a>>b;
        mp1[a]=b;
        for(int i=0;i<v[m];i++)
            {
                cin>>b;mp[a].push_back(b);
            }
        m++;
    }
    for(int i=1;i<=n;i++)
        {
            vis[i]=1;
            dfs(i,vis,mp1[i]);
            if(R==1)
                break;
            vis[i]=0;
        }
    if(R==1)
        cout<<"R"<<endl;
    else
    {   if(NA==1)
        {cout<<"NA"<<endl;return 0;}
        cout<<max_le<<endl;
    }
    system("pause");
    return 0;
}


#华为笔试##华为##笔试题目#
全部评论
第三题那个没有栈空间真的懵,递归过了60%。
2 回复 分享
发布于 2020-04-15 21:06
哇,我觉得华为的题目也太不友好了吧,读题读半天,各种约束条件,我太菜了。。。。。。。。。。
2 回复 分享
发布于 2020-04-15 21:30
我也是前两题AC,第三题难顶~~他这个输入太恶心了.输入都差点没闹明白😂
点赞 回复 分享
发布于 2020-04-15 21:05
哎还是太菜了第三题都没来得及写
点赞 回复 分享
发布于 2020-04-15 21:05
同2.7最后一题dp也是70%
点赞 回复 分享
发布于 2020-04-15 21:06
C++字符串处理是真的难受。一个匹配字符串的能写100多行代码。。
点赞 回复 分享
发布于 2020-04-15 21:06
100+87.5+70,感觉输入数据太奇葩了....
点赞 回复 分享
发布于 2020-04-15 21:07
一样,2.7,第三题题目有点恶心,弄半天才明白什么叫没有栈空间
点赞 回复 分享
发布于 2020-04-15 21:07
第二题改了好几个可能的非法输入还是87.5%实在是 改不动了,
点赞 回复 分享
发布于 2020-04-15 21:07
我还是太菜了,第三题看题时间都不够😂
点赞 回复 分享
发布于 2020-04-15 21:07
第三题只用了最笨的方法,想到了dfs但是没写出来😂
点赞 回复 分享
发布于 2020-04-15 21:24
求问,第一题,最后一个for是在干什么呀?
点赞 回复 分享
发布于 2020-04-15 21:37
我看了看其他题解 好像最后一道题的id有可能不按顺序给 这**的是什么弟弟题目描述
点赞 回复 分享
发布于 2020-04-15 22:24
为啥我就一道题。字符串中找最长不重复子串。只过了百分之八十用例就收到综合测试邮件了
点赞 回复 分享
发布于 2020-04-16 14:59
请问有原题可以看一下吗,谢谢
点赞 回复 分享
发布于 2020-04-22 21:07

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
粗心的雪碧不放弃:纯学历问题,我这几个月也是一直优化自己的简历,后来发现优化到我自己都觉得牛逼的时候,发现面试数量也没有提升,真就纯学历问题
点赞 评论 收藏
分享
11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
6 32 评论
分享
牛客网
牛客企业服务