您的位置:首页 > 其它

leetcode_423. Reconstruct Original Digits from English ASCII码转换成字符,无序的英文字符对应的数字

2016-11-23 15:57 483 查看
 题目:

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"


题意:

给定字符串s,字符串内容是数字0-9的英文表示(one, two, ……, nine)的各字符的无序排列。找出字符串s包含的所有数字。假设s有意义,即s肯定是若干数字的英文表示的字符的组合。

代码:

class Solution(object):

    def originalDigits(self, s):

        """

        :type s: str

        :rtype: str

        """

        

        n = len(s)

        

        nums = [0]*10               #初始化每个数字出现次数为0

        res = ''                 #记录返回的结果

        

        dic = {}                    #每个字符出现次数初始化为0

        for x in range(ord('a'),ord('z')+1) :

            dic[chr(x)] = 0

            

        for k in s :           #统计s中各字符出现次数

            dic[k] += 1

        

            

        nums[0] = dic['z']             #参考网上大神已经统计好的结果

        nums[2] = dic['w']

        nums[4] = dic['u']

        nums[6] = dic['x']

        nums[8] = dic['g']

        nums[5] = dic['f']-nums[4]

        nums[3] = dic['h']-nums[8]

        nums[7] = dic['s']-nums[6]

        nums[1] = dic['o']-nums[0]-nums[2]-nums[4]

        nums[9] = dic['i']-nums[5]-nums[6]-nums[8]

        

        for i in range(10) :

            if nums[i] > 0 :

                res += str(i)*nums[i]          #用数字乘以数字出现的次数

        

        return res

            

笔记:

表示刚开始看题目,始终没看懂是什么意思,可能英语太菜了。

参考了http://blog.csdn.net/camellhf/article/details/52922763的思路,才明白题目的意思。     

思路大概是先把通过字母能唯一确定的数字找出来,如果一个字符对应多个数字,就用这个字符出现次数,减去之前已确定的数字。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐