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

本文介绍了一种通过分析英文字符串中的特定字符来提取并排序数字的方法。利用不同数字的英文拼写中独有的字母作为特征,从输入的字符串中解析出原本的数字,再将这些数字按升序排列输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值