LeetCode-Reconstruct Original Digits from English

来源:互联网 发布:javascript实例大全 编辑:程序博客网 时间:2024/05/22 05:34

1. Reconstruct Original Digits from English(Medium)

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

Note:

  1. Input contains only lowercase English letters.

  2. 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.

  3. Input length is less than 50,000.

Example 1:

Input: "owoztneoer"Output: "012"

Example 2:

Input: "fviefuro"Output: "45"

Analysis
输入的字符串为数字英文单词中字母打乱后组成的字符串,可以根据各个字母的数目来确定对应数字的数目。首先创建两个int类型数组,一个用于存放每个字母的数目,一个用于存放数字数目。由于z,w,u,x,g五个字母分别只出现0,2,4,6,8中,所以可以直接根据这五个字母的数目判断出这些数字的数目。而其它几个数字则可以由这些来计算出来。

digit[0] = letter['z' - 97];digit[2] = letter['w' - 97];digit[4] = letter['u' - 97];digit[6] = letter['x' - 97];digit[8] = letter['g' - 97];digit[1] = letter['o' - 97] - (digit[0] + digit[2] + digit[4]);digit[3] = letter['h' - 97] - digit[8];digit[5] = letter['f' - 97] - digit[4];digit[7] = letter['s' - 97] - digit[6];digit[9] = letter['i' - 97] - (digit[6] + digit[8] + digit[5]);

最后将数字转换为字符串的时候,使用字符流ostringstream,则可以按升序把数字放入字符串中。

代码:

class Solution {public:    string originalDigits(string s) {        int letter[26] = {0};        int digit[10] = {0};        for (char c : s) {           //记录每个字符,在数组中加1            letter[c - 97]++;        }        digit[0] = letter['z' - 97];        digit[2] = letter['w' - 97];        digit[4] = letter['u' - 97];        digit[6] = letter['x' - 97];        digit[8] = letter['g' - 97];        digit[1] = letter['o' - 97] - (digit[0] + digit[2] + digit[4]);        digit[3] = letter['h' - 97] - digit[8];        digit[5] = letter['f' - 97] - digit[4];        digit[7] = letter['s' - 97] - digit[6];        digit[9] = letter['i' - 97] - (digit[6] + digit[8] + digit[5]);        string str;        ostringstream ss;        for (int i = 0; i < 10; i++) {            for (int j = 0; j < digit[i]; j++) {                ss << i;             //将数字放入字符流            }        }        str = ss.str();              //字符流转换为字符串        return str;    }};
阅读全文
0 0
原创粉丝点击