本文主要是介绍Leetcode 423. 从英文中重建数字,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。
示例 1:
输入:s = “owoztneoer”
输出:“012”
示例 2:
输入:s = “fviefuro”
输出:“45”
提示:
1 <= s.length <= 105
s[i] 为 [“e”,“g”,“f”,“i”,“h”,“o”,“n”,“s”,“r”,“u”,“t”,“w”,“v”,“x”,“z”] 这些字符之一
s 保证是一个符合题目要求的字符串
这题比较蛋疼,需要自己根据每个数字的英文单词的特殊字符,依次判断先分析哪个数字,顺序就是这个 ord[] = {0, 8, 3, 2, 6, 4, 5, 1, 7, 9};
class Solution {
public:string originalDigits(string s) {string name[] = {"zero", "one", "two", "three", "four", "five","six", "seven", "eight", "nine"};int ord[] = {0, 8, 3, 2, 6, 4, 5, 1, 7, 9};unordered_map<char, int> cnt;for(auto c : s) cnt[c] ++;string res;for(int x : ord) {while(true) {bool flag = true;for(auto c : name[x]) {if(!cnt[c]) {flag = false;break;}}if(flag) {res += to_string(x);for(auto c: name[x]) cnt[c] --;} elsebreak;}}sort(res.begin(), res.end());return res;}
};
这篇关于Leetcode 423. 从英文中重建数字的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!