LeetCode.423 Reconstruct Original Digits from English (字符串找规律匹配)

版权声明:本文为博主原创文章,未经博主允许不得转载。 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:

  1. Input contains only lowercase English letters.
  2. 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.
  3. 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();
    }
}

猜你喜欢

转载自blog.csdn.net/xiakexiaohu/article/details/81054019
今日推荐