题目
给你一个字符串 s
,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9
)。按 升序 返回原始的数字。
解题思路
索然无味的纯模拟题。写了都没成就感的那种题。
代码
class Solution {
public String originalDigits(String s) {
int length = s.length();
int[] numCh = new int[26], cnt = new int[10];
for (int i = 0; i < length; i++) {
numCh[s.charAt(i) - 'a']++;
}
cnt[0] = numCh[getIndex('z')];
cnt[2] = numCh[getIndex('w')];
cnt[4] = numCh[getIndex('u')];
cnt[6] = numCh[getIndex('x')];
cnt[8] = numCh[getIndex('g')];
cnt[3] = numCh[getIndex('h')] - cnt[8];
cnt[5] = numCh[getIndex('f')] - cnt[4];
cnt[7] = numCh[getIndex('s')] - cnt[6];
cnt[1] = numCh[getIndex('o')] - cnt[0] - cnt[2] - cnt[4];
cnt[9] = numCh[getIndex('i')] - cnt[5] - cnt[6] - cnt[8];
StringBuilder ans = new StringBuilder();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < cnt[i]; j++) {
ans.append(i);
}
}
return ans.toString();
}
public int getIndex(char ch) {
return ch - 'a';
}
}