日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2018年华为软件岗

發布時間:2024/3/24 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2018年华为软件岗 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

主機名由多級域名組成,自右向左,依次是頂級域名、二級域名、三級域名,例如huawei.com.cn,cn是頂級域名,com是二級域名,huawei是
三級域名。
請編寫一段程序,實現主機名排序功能,排序規則以及限制條件如下:
1、主機名按照域名等級排序,即先頂級域名排序,再二級域名排序,最后是三級域名排序;
2、每一級域名排序時,參考字典順序定義,abc 排在 abf,abc 排在 abcd 前。
3、輸入的主機名確保符合以下規則
A、主機名以字符串形式給出,連續的兩個主機名,以’|’符號分開;
B、主機名中僅包含小寫英文字母和分隔符’.’;
C、主機名中沒有連續的’.’,不以’.’開始,也不以’.’結束;
D、主機名不存在重復。
輸入
輸入為字符串,包含多個主機名,主機名之間以’|’符號分開。
輸出
輸出為經過排序后的字符串,主機名之間以’|’符號分開。
樣例輸入
huawei.com.cn|mail.huawei.com|imail.huawei.com|cctv.com.cn|bctv.com.cn

樣例輸出
cctv.com.cn|huawei.com.cn|imail.huawei.com|mail.huawei.com
cctv.com.cn|huawei.com.cn|imail.huawei.com|mail.huawei.com

第三題:主機名排序#include<iostream> #include<algorithm> //#include<string> #include<string.h> #include<vector> using namespace std;vector<string> split(const string &s, const string &seperator){vector<string> result;typedef string::size_type string_size;string_size i = 0;while (i != s.size()){//找到字符串中首個不等于分隔符的字母;int flag = 0;while (i != s.size() && flag == 0){flag = 1;for (string_size x = 0; x < seperator.size(); ++x)if (s[i] == seperator[x]){++i;flag = 0;break;}}//找到又一個分隔符,將兩個分隔符之間的字符串取出;flag = 0;string_size j = i;while (j != s.size() && flag == 0){for (string_size x = 0; x < seperator.size(); ++x)if (s[j] == seperator[x]){flag = 1;break;}if (flag == 0)++j;}if (i != j){result.push_back(s.substr(i, j - i));i = j;}}return result; } bool cmp(const vector<string> &a, const vector<string> &b){bool flag = false;//默認由大到小輸出>int lena = a.size();int lenb = b.size();int len = min(lena, lenb);for (int i = 0; i<len; i++){int resul = strcmp(a[lena - 1 - i].c_str(), b[lenb - 1 - i].c_str());if ((i == len - 1) && (resul == 0)){//某一個主機名是另一個主機名的一部分時if (len == lena)return true;elsereturn false;}if (resul>0)return false;if (resul<0)return true;}return flag; } int main(){string str;cin >> str;vector<string> hostnames = split(str, "|");vector<vector<string>> namesplit;for (int i = 0; i<hostnames.size(); i++){vector<string> tmp = split(hostnames[i], ".");namesplit.push_back(tmp);}sort(namesplit.begin(), namesplit.end(), cmp);for (int i = 0; i<namesplit.size(); i++){vector<string> v=namesplit[i];if (i>0)cout << "|";for (int j = 0; j<v.size(); j++){if (j>0)cout << ".";cout << v[j];}}return 0; } 2、計算出版書的出版號,正確的出版號有4部分:x-xxx-xxxxx-x。第一部分是語言,第二部分是出版商的編號,第三部分是出版書籍的編號,第四部分是驗證碼,中間用分割符-分開。前123部分是數字0-9組組成的,第四部分是驗證碼:是前面9位數字,第一位*1+第二位*2+第三位+3+。。。第九位*9,最后的結果mod11,如果得到的是10,就讓驗證碼為x。最后輸出整個出版號。 輸入: x-xxx-xxxxx 輸出: 如果輸入不正確,輸出error。 否則輸出: x-xxx-xxxxx-x #include<iostream> #include <math.h> #include<string> using namespace std; int main(){string strin;cin >> strin;if (strin.length() != 11){cout << "ERROR" << endl;return 0;}long long sum = 0;int num = 0;int count = 1;for (int i = 0; i<11; i++){if ((i != 1) && (i != 5)){num = strin[i] - '0';if (num>9 || num<0){cout << "ERROR" << endl;return 0;}sum += num*count;count++;}}sum = fmod(sum, 11);if(sum==10)cout << strin << '-' << 'X' << endl;elsecout << strin << '-' << sum << endl;return 0; } 1、輸入兩個字符串,只要兩個字符串中都有的字符,區分大小寫,則用'-'替換,其余部分照常輸出,不得改變字符位置。 輸入: abc cddefd 輸出: ab_ _ddefd#include<iostream> #include<vector> #include<string> using namespace std; int main(){string astr;cin>>astr;string a(astr) ;string bstr;cin>>bstr;string b(bstr);int alen=astr.length();int blen=bstr.length();for(int i=0;i<alen;i++){for(int j=0;j<blen;j++){if(astr[i]==bstr[j]){a[i]='_';b[j]='_';} }}cout<<a<<endl;cout<<b<<endl;return 0; }

總結

以上是生活随笔為你收集整理的2018年华为软件岗的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。