Java実装では、英語から423のデジタル再構成をLeetCode

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);
    }
}
リリース1537元の記事 ウォンの賞賛20000 + ビュー211万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104885274