leetcode 423. 从英文中重建数字python

423.英文重建数字 本题是一个典型的字母频率分析问题。通过识别每个数字英文单词中的独特字母,我们能够有效地还原出原始数字。通过逐步处理并减少已处理字母的计数,最终可以得到按升序排列的数字。此解法时间复杂度为 O(n),空间复杂度为 O(1),非常高效,适用于大规模字符串处理。 阅读详情

题目描述:

 题解一:未通过

1.word_to_num保存对应位置数字对应的单词。

2.在输入s中,从word_to_num第一个位置单词开始,如果可以找到,则向nums加入对应数字。

3.将nums中结果以字符串形式输出。

结果:未通过,没有考虑到同一个数字出现多次的情况

class Solution(object):
    def originalDigits(self, s):
        word_to_num = ["zero","one","two","three","four",
                       "five","six","seven","eight","nine"]
        nums = []
        for word in word_to_num:
            wordlen = len(word)
            flag = 0
            for j in range(wordlen):
                if s.find(word[j])!=-1:
                    flag = flag+1
            if flag==wordlen:
                nums.append(str(word_to_num.index(word)))
        result = "".join(nums)
        return result

 

题解二:

参考LeetCode-Python-423. 从英文中重建数字_Keep Coding-CSDN博客

1.先考虑特殊单词,即该单词中有的字母只在该单词中存在,如zero的z,two的w,four的u,six的x。find保存单词中的特殊字符(每个单词选择的字符都不同)。digit记录对应数字顺序。

2.利用counter dic记录输入s中各个字母的出现次数。

3.按照find中字符顺序,dic[find[i]]即为数字digit[i]出现次数,记录之后从dic中删除digit[i]所有字母(避免重复记录情况)

class Solution(object):
    def originalDigits(self, s):
        order = ["zero", "two", "four", "six", "one", "three", "five", "seven", "eight", "nine"]
        find = ['z','w',"u","x","o","r","f","v","t","e"]
        digit = [0,2,4,6,1,3,5,7,8,9]
        record = [0 for i in range(10)]
        dic = collections.Counter(s)
        print(dic)
        for idx in range(10):
            cnt = dic[find[idx]]
            record[digit[idx]]+=cnt
            dic = dic - collections.Counter(order[idx]*cnt)
            if not dic:
                break
        res = ""
        for i in range(10):
            res += str(i)*record[i]
        return res

 

LabVIEW vs Python:谁更适合你的ATE自动化测试系统?实测对比与选型建议 本文深入对比了LabVIEW和Python在ATE自动化测试系统中的性能表现、开发效率和应用场景,帮助工程师根据实时控制需求、数据处理复杂度及团队技能做出最优选型决策。通过实测数据和典型案例,分析两者在硬件集成、系统性能和维护成本等方面的差异,并提供混合架构实施建议。 阅读详情

相关推荐

STM32 RTC_WaitForSynchro()死循环问题分析与LSI时钟优化实践

本文深入分析了STM32使用LSI时钟源时,调用RTC_WaitForSynchro()函数陷入死循环的根本原因。问题核心在于RTC时钟域未正确使能,导致硬件同步标志RSF无法置位。文章提供了通过显式调用RCC_RTCCLKCmd(ENABLE)函数启用RTC时钟总开关的解决方案,并分享了编写健壮RTC/BKP初始化代码、增加超时机制等最佳实践,确保系统稳定运行。

weixin_29185493的博客 482

LeetCode-Python-423.英文重建数字

给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。 输入字符串的长度小于 50,000。 示例 1: 输入: "owoztneoer" 输出: "012" (zeroonetwo) 示例 2: 输入: ...

Keep Coding 802

消防给水及消火栓系统技术规范图示15S909.pdf

消防给水及消火栓系统技术规范图示15S909.pdf

[LeetCode解题报告] 423.英文重建数字

脑筋急转弯

liuliangcan的博客 367

leetcode每日一题-423:从英文重建数字

leetcode每日一题-423:从英文重建数字 链接 从英文重建数字 题目 分析 首先我们先分析每个字母的组成,然后发现一些字符只在一个单词中出现,我们先去统计一下这些单词个数。 z,w,u,x,g都只出现在一个数字中,也就是0,2,4,6,8,我们用哈希表统计一下s字符串中各个字符的数量,就可以知道0,2,4,6,8的数量,然后我们注意一下只在两个数字中出现的字符。 h 只在 3,8 中出现。由于我们已经知道了 8 出现的次数,因此可以计算出 3 出现的次数。 f 只在 4,5 中出现

qq_45826803的博客 4992

LeetCode 423.英文重建数字(C++、python

给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。 输入字符串的长度小于 50,000。 示例 1: 输入: "owoztneoer" 输出: "012" (zeroonetwo) 示例 2: 输入: ...

qq_27060423的博客 1011

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 digits in ascending order. Note: Input contains only lowercase English letters. Input is guarant

JackZhangNJU的专栏 886

Leetcode_总结】423.英文重建数字 - python

Q: 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允许的。 输入字符串的长度小于 50,000。 示例 1: 输入: "owoztneoer" 输出: "012" (zeroonetwo) 链接:https...

maka_uir的博客 475

LeetCode423.英文重建数字 结题报告 (python)

原题地址:https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/ 题目描述: 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 "abc" 或 "zerone" 的输入是不允...

暮雨凉初透 223

Leetcode_Python 423英文重建数字

class Solution: def originalDigits(self, s: str) -> str: eposide = {"z":"zero","o":"one","w":"two","r":"three","u":"four", "f":"five","x":"six","s":"seven","g":"eight","i":"nine"} one_eposide = {"zero":"0","one":"1","two".

安静到无声 268

Python | Leetcode Python题解之第423题从英文重建数字

Python | Leetcode Python题解之第423题从英文重建数字

Mopes__的博客 564

力扣题:字符的统计-12.2

解题思想:有的单词通过一个字母就可以确定,依次确定即可。

yumeng3866的博客 193

leetcode423.英文重建数字

题目来源 423.英文重建数字 题目描述 题目解析 我们知道,每个数字对应一个英文单词,“zero”, “one”, “two”, “three”, “four”, “five”, “six”, “seven”, “eight”, “nine”,如果去观察每个英文单词在这些单词中出现的情况,我们可以发现: 有些单词的字符是独一无二的 比如z,只出现在zero中 还有w,u,x,g这四个单词,分别只出现在two,four,six,eight中 那么这五个数字的个数就可以被确定了 有些单词会

OceanStar的博客 304

Leetcode 423. Reconstruct Original Digits from English 重构数字 解题报告

1 解题思想这道题是让我们给了我们一个字符串,字符串里全都是用英文写的数字,但是字母顺序是打乱的现在我们需要还原出来其真正的数字,字符串肯定是合法的解题的核心在于,0~9对应的英文字母,有那么些规律,可以从中找到相关的规律。* zero:0 * one:1 * two:2 * three:3 * four:4 * five:5 * six:

MebiuW的专栏 443

LeetCode423. Reconstruct Original Digits from English(Python实现)

1.问题描述: 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. Inp

yanggulu9252的博客 259

Leetcode 423.英文重建数字(Reconstruct Original Digits from English)

Leetcode 423.英文重建数字 1 题目描述(Leetcode题目链接)   给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。 输入字符串的长度小于 50,000。 输入: "owoztneoer" 输出: "012" (zeroonetwo) 输入: "fviefuro" 输出: "45" (fourfive

qq_39378221的博客 283

LeetCode 423.英文重建数字

题目链接: 力扣https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/ class Solution: def originalDigits(self, s: str) -> str: from collections import Counter c = Counter(s) cnt = [0] * 10 cnt[0] = .

Sasakihaise_的博客 1827

leetcode 423.英文重建数字

原题如下: 思路一 既然字符串中包含了一定能够完整组成若干个数字的一连串字母并且没有剩余,那么我们可以先列举出每个数字所对应的英文单词: 0-zero ; 1-one;2-two;3-three;4-four;5-five;6-six;7-seven;8-eight;9-nine 我们发现某些数字英文单词里面有自己独有的字母,分别是: 0-z;2-w;4-u;6-x;8-g 那么第一步就是通过一个长度为26的数组先来统计各个字母的数量,找到上述五种字母的数量也就是对应的数字应有的数量,并减去本数字英文

zhuruihe2014的博客 302

力扣(leetcode)闲来无事刷一刷

力扣(leetcode423.英文重建数字 python题目思路遇到的问题代码结果结论 题目 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。 输入字符串的长度小于 50,000。 示例 1: 输入: “owo...

chu7474的博客 359

力扣 423.英文重建数字

题目 给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9。按升序输出原始的数字。 注意: 输入只包含小写英文字母。 输入保证合法并可以转换为原始的数字,这意味着像 “abc” 或 “zerone” 的输入是不允许的。 输入字符串的长度小于 50,000。 示例 输入: “owoztneoer” 输出: “012” (zeroonetwo) 输入: “fviefuro” 输出: “45” (fourfive) 来源:力扣(LeetCode) 链接:https://leetcode-cn.com

(ง •_•)ง没有困难的工作,只有勇敢的狗狗 288

力扣每日一题2021-11-24从英文重建数字

英文重建数字423.英文重建数字题目描述思路统计每个数字的特有的字母个数Java实现Python实现 423.英文重建数字 题目描述 从英文重建数字 思路 统计每个数字的特有的字母个数 首先统计每个字母在哪些数字中出现: 字母 数字 z 0 w 2 u 4 x 6 g 8 f 4 5 h 3 8 s 6 7 v 5 7 n 1 7 9 r 0 3 4 t 2 3 8 i 5 6 8 9 o 0 1 2 4 e 0 1

wcy1034036507的博客 735
上一篇: leetcode 859. 亲密字符串 python
下一篇: 剑指 Offer 09. 用两个栈实现队列python
岗岗ganggang
博客等级 码龄10年 47粉丝 267原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值