1. 问题描述:

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

示例 1:

输入: "owoztneoer"
输出: "012" (zeroonetwo)

示例 2:

输入: "fviefuro"
输出: "45" (fourfive)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reconstruct-original-digits-from-english

2. 思路分析:

我们需要在0~9的英文单词中找一下规律看是否可以通过某个字符唯一确定某个单词,我们可以写出0~9的英文单词:
zero one two three four five six seven eight nine
可以发现字母z可以确定zero,h可确定eight...我们就可以得到一个序列order[0, 8, 3, 2, 6, 4, 5, 1, 7, 9],我们可以根据这个顺序来找s中的单词。这里需要先统计一下s中各个字符出现的次数,然后遍历order,判断当前顺序对应的单词是否存在可以枚举当前单词中的字母在字典中是否存在即可,只要有一个字母在字典中不存在说明当前单词就是不存在的,因为单词可能存在多个所以需要最外面使用一个while循环加上一个标记flag找出s中所有当前顺序出现的单词,当找到当前的单词之后那么需要在字典中对应的字符次数减1。

3. 代码如下:

import collectionsclass Solution:def originalDigits(self, s: str) -> str:# zero one two three four five six seven eight nine# 实际上是找规律的过程nums = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]dic = collections.defaultdict(int)for c in s:dic[c] += 1res = list()for x in order:# 因为可能存在多个单词所以需要使用while循环while True:flag = Truefor c in nums[x]:if dic[c] == 0:flag = Falsebreakif flag:for c in nums[x]:dic[c] -= 1res.append(str(x))else:breakres.sort()return "".join(res)

423 从英文中重建数字(找规律)相关推荐

  1. 423. 从英文中重建数字

    423. 从英文中重建数字 给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9).按 升序 返回原始的数字. 例 1:输入:s = "owoztneoer" ...

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

    https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/ 题目 给你一个字符串s,其中包含字母顺序打乱的用英 ...

  3. LeetCode 423. 从英文中重建数字(找规律)

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

  4. 【解题报告】Leecode 423. 从英文中重建数字——Leecode每日一题系列

    今天是坚持每日一题打卡的第二十五天 题目链接:https://leetcode-cn.com/problems/reconstruct-original-digits-from-english/ 题解 ...

  5. 【LeetCode笔记 - 每日一题】423. 从英文中重建数字(Java、字符串、偏思路)

    文章目录 题目描述 思路 && 代码 题目描述 看了题目以后想到啥? 字符数量统计 银行家算法逐个拆解 建立数字 - 字符串的全局映射 思路 && 代码 抄答案了,采取 ...

  6. leetcode 423. Reconstruct Original Digits from English | 423. 从英文中重建数字(Java)

    题目 https://leetcode.com/problems/reconstruct-original-digits-from-english/ 题解 class Solution {public ...

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

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

  8. [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]

    [问题描述][中等] [解答思路] 找规律 时间复杂度:O(logN) 空间复杂度:O(logN) class Solution {public int findNthDigit(int n) {in ...

  9. 面试题:看数字找规律

    第一种----等差数列:是指相邻之间的差值相等,整个数字序列依次递增或递减的一组数. 1.等差数列的常规公式.设等差数列的首项为a1,公差为d ,则等差数列的通项公式为an=a1+(n-1)d (n为 ...

最新文章

  1. FPGA之道(18)FPGA设计的编译过程
  2. VMSS上用Managed Disk和Data Disk进行自动扩展(1)
  3. OSPF中DR选举机制详解
  4. Linux上在文件夹上层新建一个同名目录
  5. VB winform自动更新 笔记
  6. exec函数族(部分 最常用的)
  7. 在飞音G801上运行OpenWRT+Asterisk
  8. java running_Running
  9. Android中利用OpenMax 编程的基本流程
  10. invalid signature什么意思_function是什么意思?
  11. python100例详解-Python字典实现简单的三级菜单(实例讲解)
  12. iOS开发UIAlertController之UIAlertAction加图片(UIAlertController按钮加图片)
  13. Python爬取javascript(js)动态网页
  14. 基于FFmpeg的视频播放器之八:音频重采样
  15. Windows命令行计算文件MD5
  16. python字典相乘_python集合、元组、字典
  17. 致敬赵雷:基于TensorFlow让机器生成赵雷曲风的歌词
  18. 别再稀里糊涂的使用ls命令了,带你重新认识linux查看文件信息的ls【内涵长文,非命令参数罗列】
  19. 航拍无人机 无人车_无人机将有自己的时刻
  20. 【python】装饰模式

热门文章

  1. scoped_refptr, unique_ptr的各种用法
  2. 个人职场经历(都是些吐槽的事),mysql调优方法
  3. 【读书笔记】《金锁记》
  4. 【案例1】征信指标加工
  5. MySQL - 循环与游标
  6. 快速幂基础知识(重温学习笔记)
  7. java幂等_幂等性学习及接口的幂等性
  8. UI/UE/ID/UED/UCD的区别(2015年的博客)
  9. 【笔记】微信小程序 跳转 微信公众号
  10. 如何通过对广告条的优化,提升广告条的点击率