423. 从英文中重建数字

  1. 从英文中重建数字

思路 :

  1. 观察每个数字的英文,找出数量决定性的字母,首先判断对应的数字个数。
  2. 进而继续推理其他数字:比如我们可以从u决定four的数量,从而可以根据f来推理决定five的数量,进而可以根据v来决定seven,其他数字推理逻辑类似。
  3. 注意:nine中又两个n,最后进行9的推理是,要整除2。
class Solution:
    def DeterNums(self, index, Alphabet, numsE):
        #check
        if( not all([ True if Alphabet[w] >0 else False for w in numsE[1] ])):
            return;
        E = numsE[1][-1]
        if numsE[0] == 9:
            index[numsE[0]] = Alphabet[E]//2
            Alphabet['n'] = index[numsE[0]] 
        else:
            index[numsE[0]] = Alphabet[E]

        for v in numsE[1]:
            Alphabet[v] -= index[numsE[0]]


    def originalDigits(self, s: str) -> str:
        Alphabet = collections.Counter(s)
        index, re = [0] * 10, ''
        numsE = [[2, 'tow'], [0, 'eroz'], [6, 'six'], [4, 'foru'],
                 [7, 'evens'], [1, 'neo'], [5, 'ivef'], [9, 'ien'],
                 [8, 'eghti'], [3, 'treeh']]

        for nE in numsE:
            self.DeterNums(index, Alphabet, nE)
        re = ''
        for i in range(10):
            re += str(i)*index[i]
        return re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值