版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiakexiaohu/article/details/81054019
题目:
Given a non-empty string containing an out-of-order English representation of digits 0-9
, output the digits in ascending order.
Note:
- Input contains only lowercase English letters.
- Input is guaranteed to be valid and can be transformed to its original digits. That means invalid inputs such as "abc" or "zerone" are not permitted.
- Input length is less than 50,000.
Example 1:
Input: "owoztneoer" Output: "012"
Example 2:
Input: "fviefuro" Output: "45"
分析:
class Solution {
public String originalDigits(String s) {
//给定由各种数字组成的字符串序列,将该字符串序列转成数字,然后按其升序输出
//注意:其中给定的字符串序列一定是满足可以组成符合规定的数字,且字符串只含有小写字母
//思路:根据规律可以找出0-9分别代表其特征字母例如:zero 只有0里面有z
if(s==null||s.length()==0) return "";
int [] res=new int[10];
int [] alpha=new int[26];
//将字母存储在数组
for(int i=0;i<s.length();i++){
alpha[s.charAt(i)-'a']++å;
}
res[0]=alpha['z'-'a'];
res[2]=alpha['w'-'a'];
res[6]=alpha['x'-'a'];
res[7]=alpha['s'-'a']-res[6];//6和7都有s
res[8]=alpha['g'-'a'];
res[4]=alpha['u'-'a'];
res[5]=alpha['f'-'a']-res[4];//4和5都有f
res[3]=alpha['h'-'a']-res[8];//3和8都有h
res[1]=alpha['o'-'a']-res[0]-res[2]-res[4];//都有o
res[9]=alpha['i'-'a']-res[5]-res[6]-res[8];
StringBuilder sb=new StringBuilder();
for(int i=0;i<10;i++){
if(res[i]!=0){
for(int j=0;j<res[i];j++){
sb.append(String.valueOf(i));
}
}
}
return sb.toString();
}
}