Algorithm


Problem Name: 423. Reconstruct Original Digits from English

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"

 

Constraints:

  • 1 <= s.length <= 105
  • s[i] is one of the characters ["e","g","f","i","h","o","n","s","r","u","t","w","v","x","z"].
  • s is guaranteed to be valid.

Code Examples

#1 Code Example with Java Programming

Code - Java Programming


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]++;
      if (c == 'w') count[2]++;
      if (c == 'x') count[6]++;
      if (c == 's') count[7]++; //7-6
      if (c == 'g') count[8]++;
      if (c == 'u') count[4]++; 
      if (c == 'f') count[5]++; //5-4
      if (c == 'h') count[3]++; //3-8
      if (c == 'i') count[9]++; //9-8-5-6
      if (c == 'o') count[1]++; //1-0-2-4
    }
    count[7] -= count[6];
    count[5] -= count[4];
    count[3] -= count[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();
  }
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
s = "owoztneoer"

Output

x
+
cmd
"012"

#2 Code Example with Javascript Programming

Code - Javascript Programming


const originalDigits = function(s) {
  const count = new Array(10).fill(0);
  for (let i = 0; i  <  s.length; i++) {
    let c = s.charAt(i);
    if (c === "z") count[0]++;
    if (c === "w") count[2]++;
    if (c === "x") count[6]++;
    if (c === "s") count[7]++; //7-6
    if (c === "g") count[8]++;
    if (c === "u") count[4]++;
    if (c === "f") count[5]++; //5-4
    if (c === "h") count[3]++; //3-8
    if (c === "i") count[9]++; //9-8-5-6
    if (c === "o") count[1]++; //1-0-2-4
  }
  count[7] -= count[6];
  count[5] -= count[4];
  count[3] -= count[8];
  count[9] = count[9] - count[8] - count[5] - count[6];
  count[1] = count[1] - count[0] - count[2] - count[4];
  let ans = "";
  for (let i = 0; i  < = 9; i++) {
    ans += `${i}`.repeat(count[i]);
  }
  return ans;
};
Copy The Code & Try With Live Editor

Input

x
+
cmd
s = "owoztneoer"

Output

x
+
cmd
"012"
Advertisements

Demonstration


Previous
#421 Leetcode aximum XOR of Two Numbers in an Array Solution in C, C++, Java, JavaScript, Python, C# Leetcode
Next
#424 Leetcode Longest Repeating Character Replacement Solution in C, C++, Java, JavaScript, Python, C# Leetcode