423. 从英文中重建数字
给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。
注意:
输入只包含小写英文字母。
输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。
输入字符串的长度小于 50,000。
示例 1:
输入: "owoztneoer"
输出: "012" (zeroonetwo)示例 2:
输入: "fviefuro"
输出: "45" (fourfive)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reconstruct-original-digits-from-english
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
0
的英文zero
中z
是唯一的,统计字符串中z
的出现次数即为0
的次数,同样的还有two
中的w
、four
中的u
、six
中的x
、eight
中的g
3
的英文three
中的h
在8
的英文eight
中也出现了,所以3
的出现次数为h
的总出现次数减去8
的出现次数(8
的出现次数即g
的出现次数)
/**
* @param {string} s
* @return {string}
*/
var originalDigits = function(s) {
const count = (n) => {
let c = 0
for (let i = 0; i < s.length; i++) {
if (s[i] == n) {
c++
}
}
return c
}
const str = (s, n) => {
let temp = ''
for (let i = 0; i < n; i++) {
temp += s
}
return temp
}
let a0 = count('z')
let a2 = count('w')
let a4 = count('u')
let a6 = count('x')
let a8 = count('g')
let a3 = count('h') - a8
let a7 = count('s') - a6
let a5 = count('v') - a7
let a1 = count('o') - a0 - a2 - a4
let a9 = count('i') - a5 - a6 - a8
let res = ''
for (let i = 0; i <= 9; i++) {
res += str(i, eval('a' + i))
}
return res
};