JIAKAOBO

LeetCode

venmo
wechat

感谢赞助!

  • ㊗️
  • 大家
  • offer
  • 多多!

Problem

Given a string s containing an out-of-order English representation of digits 0-9, return the digits in ascending order.

Example 1:

Input: s = "owoztneoer"
Output: "012"

Example 2:

Input: s = "fviefuro"
Output: "45"

Code

class Solution {
    public String originalDigits(String s) {
        int[] count = new int[10];
        for (int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if (c == 'z') count[0]++; // 0
            if (c == 'o') count[1]++; // 1-0-2-4
            if (c == 'w') count[2]++; // 2
            if (c == 'h') count[3]++; // 3-8
            if (c == 'u') count[4]++; // 4
            if (c == 'f') count[5]++; // 5-4
            if (c == 'x') count[6]++; // 6
            if (c == 's') count[7]++; // 7-6
            if (c == 'g') count[8]++; // 8
            if (c == 'i') count[9]++; // 9-8-5-6
        }

        count[7] -= count[6]; // 在数7的时候把6也数了一遍
        count[5] -= count[4]; // 在数5的时候把4也数了一遍
        count[3] -= count[8]; // 在数3的时候把8也数了一遍
        count[9] = count[9] - count[8] - count[5] - count[6];
        count[1] = count[1] - count[0] - count[2] - count[4];

        StringBuilder sb = new StringBuilder();
        for(int i = 0; i <= 9; i++){
            for(int j = 0; j < count[i]; j++){
                sb.append(i);
            }
        }

        return sb.toString();
    }
}