栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Leetcode--Java--423. 从英文中重建数字

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Leetcode--Java--423. 从英文中重建数字

题目描述

给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。

样例描述
示例 1:

输入:s = "owoztneoer"
输出:"012"
示例 2:

输入:s = "fviefuro"
输出:"45"
思路

简单模拟 + 词频统计 + 脑筋急转弯
由题目中单词的特性,可以根据一个特定的顺序来对原字符串拆解单词,保证一次用一个字母来判断一个单词是否存在。比如zero可以用z表示zero是否存在。

  1. 由上述可以得到一个可行的顺序,0, 8, 3, 2, 6, 4, 5, 1, 7, 9,依次按照这个顺序来解析即可。
  2. 注意有可能有多个重复的单词,所以要用while。
  3. 外层遍历特定顺序的索引,来判断是否存在各个数。
  4. 排序的话,可以先转成char数组,就能用数组工具类排序,然后再转回String。
代码
class Solution {
    String[] nums = new String[]{"zero", "one", "two", "three", "four", "five", 
    "six", "seven", "eight", "nine"};
    int[] order = new int[]{0, 8, 3, 2, 6, 4, 5, 1, 7, 9};
    public String originalDigits(String s) {
      int n = s.length();
      //统计字母出现的词频
      int cnt[] = new int[26];
      for (char c: s.toCharArray()) {
          cnt[c - 'a'] ++;
      }
      StringBuffer res = new StringBuffer();
      //遍历特定顺序的索引,来依次看是否存在该数字
       for (int x: order) {
          //不断解析该数,因为不确定有多少个,所以不断循环
          while(true) {
                boolean flag = true;
              String word = nums[x];
              for (char c: word.toCharArray()) {
                  //如果不存在这个字母
                  if (cnt[c - 'a'] == 0) {
                     flag = false;
                     break;
                  }
              }
              //如果经过上面判断,都存在,说明按顺序可以解析出数字
              if (flag) {
                  //加入结果集并且减少所有字母次数
                  res.append(x);
                 for (char c: word.toCharArray()) {
                     cnt[c - 'a'] --;
                 }
              } else {
                  //没有就不存在
                  break;
              }
          }
         
       }
      
       //转化成字符数组再排序
         char ch[] = res.toString().toCharArray();
         Arrays.sort(ch);
       return String.valueOf(ch);
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590999.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号