这题我们只要统计关键的字符就能够统计出每个单词出现的次数,有写单词需要统计前驱字符才能计算出来
首先:具有独特字符的zero/two/six/eight
seven(six)/five(seven)
four(five)/nine(eight/six/five)/one(zero/two/four)/three(zero/four)
public class Solution {
public String originalDigits(String s) {//基于字符统计,消耗空间
int[] charNum = new int[26];
for(int i=0;i<s.length();i++){
charNum[s.charAt(i)-97]++;
}
int[] digNum = new int[10];
//first turn
digNum[0] += charNum['z'-97];
digNum[2] += charNum['w'-97];
digNum[6] += charNum['x'-97];
digNum[8] += charNum['g'-97];
//second turn
digNum[7] += charNum['s'-97]-digNum[6];
digNum[5] += charNum['v'-97]-digNum[7];
//three turn
digNum[4] += charNum['f'-97]-digNum[5];
digNum[1] += charNum['o'-97] - digNum[0] - digNum[2] -digNum[4];
digNum[3] += charNum['r'-97] - digNum[0] - digNum[4];
//four turn
//digNum[9] += charNum['n'-97] -digNum[7] -digNum[1];
String res = "";
for(int i=0;i<10;i++){
while(digNum[i]>0){
res += i;
digNum[i]--;
}
}
return res;
}
}
\
找了一些算法,大家的思路都差不多是这样,不知道为啥我的速度这么慢。。。
/*
留坑~不开心不开心
*/