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

题目:

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();
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值