Given a non-empty string containing an out-of-order English representation of digits 0-9, output the digits in ascending order.

Note:
Input contains only lowercase English letters.
Input is guaranteed to be valid and can be transformed to its original digits. That means invalid inputs such as "abc" or "zerone" are not permitted.
Input length is less than 50,000.
Example 1:
Input: "owoztneoer" Output: "012"
Example 2:
Input: "fviefuro" Output: "45"

# of '0': # of 'z'

# of '2': # of 'w'

4: u

6: x

8: g

3: h - 8

5: f - 4

7: s - 6

1: o - 0 - 2 - 4

9: i - 5 - 6 - 8

 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();
}

我的code用了一个数组来存char count

 public class Solution {
public String originalDigits(String s) {
StringBuilder res = new StringBuilder();
if (s==null || s.length()==0) return "";
int[] chars = new int[26];
int[] digits = new int[10];
for (int i=0; i<s.length(); i++) {
chars[s.charAt(i)-'a']++;
}
count(chars, digits);
for (int i=0; i<digits.length; i++) {
for (int j=0; j<digits[i]; j++) {
res.append(i);
}
}
return res.toString();
} public void count(int[] chars, int[] digits) {
//'0'
digits[0] = chars['z'-'a'];
//'2'
digits[2] = chars['w'-'a'];
//'4'
digits[4] = chars['u'-'a'];
//'6'
digits[6] = chars['x'-'a'];
//'8'
digits[8] = chars['g'-'a'];
//'1' and '2' and '0' and '4' share 'o'
digits[1] = chars['o'-'a'] - digits[2] - digits[0] - digits[4];
//'3' and '8' share 'h'
digits[3] = chars['h'-'a'] - digits[8];
//'5' and '4' share 'f'
digits[5] = chars['f'-'a'] - digits[4];
//'7' and '6' share 's'
digits[7] = chars['s'-'a'] - digits[6];
//'9' and '5' and '6' and '8' share 'i'
digits[9] = chars['i'-'a'] - digits[5] - digits[6] - digits[8];
}
}

Leetcode: Reconstruct Original Digits from English的更多相关文章

  1. [LeetCode] Reconstruct Original Digits from English 从英文中重建数字

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  2. 【LeetCode】423. Reconstruct Original Digits from English 解题报告(Python)

    [LeetCode]423. Reconstruct Original Digits from English 解题报告(Python) 标签: LeetCode 题目地址:https://leetc ...

  3. [LeetCode] 423 Reconstruct Original Digits from English

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  4. LeetCode 423. Reconstruct Original Digits from English——学会观察,贪心思路

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  5. 【LeetCode】423. Reconstruct Original Digits from English

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  6. 423. Reconstruct Original Digits from English (leetcode)

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  7. [Swift]LeetCode423. 从英文中重建数字 | Reconstruct Original Digits from English

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  8. 423. Reconstruct Original Digits from English(Medium)

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  9. 423 Reconstruct Original Digits from English 从英文中重建数字

    给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9.按升序输出原始的数字.注意:    输入只包含小写英文字母.    输入保证合法并可以转换为原始的数字,这意味着像 "ab ...

随机推荐

  1. 在Eclipse中使用JSHint检查JavaScript

    之前使用 JSlint 来校验 JavaScript 代码,发现灵活性不够,因此改用 JSHint.按照官方的说法,JSHint 是一个社区驱动(community-driven)的工具,用于检测Ja ...

  2. Hibernate提供的内置标识符生成器

    Hibernate提供的内置标识符生成器 Java语言按内存地址来识别或区分同一个类的不同对象,而关系数据库按主键来识别或区分同一个表的不同记录.Hibernate使用OID(对象标识符)来统一两者之 ...

  3. Point Grey FlyCapture 实例汇总

    Example Language Description AsyncTriggerEx C++ Demonstrates some of the basic asynchronous trigger ...

  4. Ajax 完整教程。。转载

    Ajax 完整教程 第 1 页 Ajax 简介 Ajax 由 HTML.JavaScript™ 技术.DHTML 和 DOM 组成,这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应 ...

  5. *HDU 1286,2824欧拉函数

    #include<iostream> #include<string> #include<cstdio> #include<cmath> #includ ...

  6. hdu-acm steps 免费馅饼

    /*dp入门级的题目,和数塔是一样的,这道题不用做什么优化,感觉时间复杂度不会超.主要还是细节上的问题, 这道题的状态和状态方程都容易找到,采用自底向上的方式会好很多*/ #include" ...

  7. javascript中的删除方法

    可能呢再开发的过程中呢使用的不是很多,但是碰上呢可以注意下 1.比如: var x = 10; delete x; console.log(x); 结果是多少,是10,不是异常也不是undefined ...

  8. MySQL进阶

    小知识: \G 放到sql语句后,可以使每个字段打印到单独的行,如: mysql> select * from user_msg limit 2 \G; 一.增加删除表字段的ALTER命令: A ...

  9. NumberUtils.java

    package com.vcredit.ddcash.batch.util; import java.math.BigDecimal; public class NumberUtils { /** * ...

  10. array_reduce方法用回调函数迭代地将对数组的值进行操作

    在处理php数组的时候,有一种需求特别的频繁,如下二维数组: $arr = array( 1=>array( 'id' => 5, 'name' => '张三' ), 2=>a ...