• Java实现 LeetCode 423 从英文中重建数字


    423. 从英文中重建数字

    给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。

    注意:

    输入只包含小写英文字母。
    输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。
    输入字符串的长度小于 50,000。
    示例 1:

    输入: “owoztneoer”

    输出: “012” (zeroonetwo)
    示例 2:

    输入: “fviefuro”

    输出: “45” (fourfive)

    PS:
    我认为这是leetcode第一个问题描述和测试用例一样的

    b( ̄▽ ̄)d

    class Solution {
          public String originalDigits(String s) {
            int[] wordCnt = new int[26];
            for (char c : s.toCharArray()) {
                wordCnt[c - 'a']++;
            }
    
            int[] numCnt = new int[10];
            numCnt[0] = wordCnt['z' - 'a'];
            numCnt[2] = wordCnt['w' - 'a'];
            numCnt[4] = wordCnt['u' - 'a'];
            numCnt[6] = wordCnt['x' - 'a'];
            numCnt[8] = wordCnt['g' - 'a'];
    
            numCnt[1] = wordCnt['o' - 'a'] - numCnt[0] - numCnt[2] - numCnt[4];
            numCnt[3] = wordCnt['h' - 'a'] - numCnt[8];
            numCnt[5] = wordCnt['f' - 'a'] - numCnt[4];
            numCnt[7] = wordCnt['s' - 'a'] - numCnt[6];
    
            numCnt[9] = wordCnt['i' - 'a'] - numCnt[5] - numCnt[6] - numCnt[8];
    
            int len = 0;
            for (int c : numCnt) {
                len += c;
            }        
            char[] res = new char[len];
            
            len = 0;
            for (int i = 0; i <= 9; i++) {
                for (int j = 0; j < numCnt[i]; j++) {
                    res[len++] = (char)('0' + i);
                }
            }
    
            return new String(res);
        }
    }
    
  • 相关阅读:
    8.【原创】使用Java8中的Stream特性筛选数据
    27.【转载】如何避免回表查询,什么是索引覆盖
    17.【转载】广东省2020学位英语考试报考须知
    Java 正则?:?=?!的理解
    集合的优化操作
    ArrayList中remove方法和set(null)的区别
    POI 导入、导出Excel
    JS 跳转到新页面并用post传参
    win 10 如何关闭自动更新
    JSON定义及应用
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13075089.html
Copyright © 2020-2023  润新知