国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

423. Reconstruct Original Digits from English

2019-11-06 08:15:42
字體:
來源:轉載
供稿:網友

好麻煩啊,本題的意思就是給出0-9對應的字符,zero-nine,將這些字符打亂順序,得到一個字符串,現在需要將這個字符串識別出數字來,并且按照從小到大的順序輸出。

在查看別人的代碼中,發現了更加簡單的書寫方式。 我的代碼:

class Solution {public: string originalDigits(string s) { vector<string> strNum; strNum.push_back("zero"); strNum.push_back("one"); strNum.push_back("two"); strNum.push_back("three"); strNum.push_back("four"); strNum.push_back("five"); strNum.push_back("six"); strNum.push_back("seven"); strNum.push_back("eight"); strNum.push_back("nine"); map<char,int> count; for(int i=0;i<s.size();i++) count[s[i]]++; vector<int> trans; /*for(map<char,int>::iterator it =count.begin();it!=count.end();it++) cout<<it->first<<" "<<it->second<<endl;*/ trans.insert(trans.begin(),count['w'],2); trans.insert(trans.begin(),count['u'],4); trans.insert(trans.begin(),count['x'],6); trans.insert(trans.begin(),count['g'],8); trans.insert(trans.begin(),count['z'],0); int temp=count['z']; for(int i=0;i<strNum[0].size();i++) //zero count[strNum[0][i]]-=temp; temp=count['w']; for(int i=0;i<strNum[2].size();i++) // count[strNum[2][i]]-=temp; temp=count['u']; for(int i=0;i<strNum[4].size();i++) // count[strNum[4][i]]-=temp; temp=count['x']; for(int i=0;i<strNum[6].size();i++) // count[strNum[6][i]]-=temp; temp=count['g']; for(int i=0;i<strNum[8].size();i++) // count[strNum[8][i]]-=temp; /*for(map<char,int>::iterator it =count.begin();it!=count.end();it++) cout<<it->first<<" "<<it->second<<endl;*/ trans.insert(trans.begin(),count['s'],7); trans.insert(trans.begin(),count['f'],5); trans.insert(trans.begin(),count['h'],3); trans.insert(trans.begin(),count['o'],1); temp=count['s']; for(int i=0;i<strNum[7].size();i++) // count[strNum[7][i]]-=temp; temp=count['f']; for(int i=0;i<strNum[5].size();i++) // count[strNum[5][i]]-=temp; temp=count['h']; for(int i=0;i<strNum[3].size();i++) // count[strNum[3][i]]-=temp; temp=count['o']; for(int i=0;i<strNum[1].size();i++) // count[strNum[1][i]]-=temp; trans.insert(trans.begin(),count['i'],9); temp=count['i']; for(int i=0;i<strNum[9].size();i++) // count[strNum[9][i]]-=temp; sort(trans.begin(),trans.end()); string result; for(int i=0;i<trans.size();i++) result+=to_string(trans[i]); return result; }};

別人的代碼,沒有考慮所有的位置情況,而是只關注用于計數的那些字母,方便了很多,值得學習。

class Solution {public: string originalDigits(string s) { vector<int> a(10, 0); vector<int> alpha(128, 0); for (char c : s) alpha[c]++; a[0] = alpha['z']; a[2] = alpha['w']; a[4] = alpha['u']; a[6] = alpha['x']; a[8] = alpha['g']; a[3] = alpha['h'] - a[8]; a[5] = alpha['f'] - a[4]; a[7] = alpha['v'] - a[5]; a[1] = alpha['o'] - a[0] - a[2] - a[4]; a[9] = alpha['i'] - a[5] - a[6] - a[8]; string ans; for (int i = 0; i < 10; i++) { if (a[i] > 0) ans += string(a[i], '0' + i); } return ans; }};
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 且末县| 重庆市| 南京市| 台湾省| 两当县| 宁南县| 漳平市| 涟水县| 镇原县| 鲁山县| 绵阳市| 黔东| 乌拉特中旗| 台东县| 正镶白旗| 丰顺县| 高要市| 洪江市| 石阡县| 易门县| 晋江市| 遵义县| 新邵县| 辽阳县| 登封市| 鸡西市| 长沙县| 林州市| 司法| 潢川县| 松阳县| 玉龙| 信阳市| 龙南县| 田东县| 韩城市| 宝鸡市| 梨树县| 年辖:市辖区| 祁阳县| 盐城市|