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. 物联网背后的网络安全风险
  2. MapReduce编程系列 — 2:计算平均分
  3. Linux下 su命令与su - 命令的区别
  4. python编程入门指南上下百度云-Python编程入门指南(上下册)
  5. 每年考研计算机专硕和学硕报比例,各院校研招计划发布 专硕与学硕比例调整...
  6. 从头写个http client(java)
  7. android SharedPreferences保存list数据
  8. 消息称苹果关联公司1.25亿美元购买车辆测试场 占地超过3万亩
  9. MySQL数据库和表名大小写敏感开关的打开办法
  10. tornado+websocket+mongodb实现在线视屏文字聊天
  11. 搭建ntp时间服务器 ntp - (Network Time Protocol)
  12. 了解mysql的undo log
  13. alembic生成数据库升级脚本
  14. 条形码简介_条形码基本常识_条形码基本原理
  15. java中的implement怎么用?
  16. Linux之——命令大全
  17. mysql视频怎么存_学习怎样把视频文件存储到mysql数据库
  18. paly()方法和pause()方法
  19. ESP8266-Arduino编程实例-PCF8575IO扩展器驱动
  20. python3.x 实现天气查询

热门文章

  1. Vue数据绑定(单向绑定,双向绑定)
  2. Zabbix实现系统监控原理
  3. 【Java】递归算法
  4. Vue 生命周期函数 详细讲解+中文图解 一目了然 ~ 内有干货
  5. 24.WEB安全基础环境搭建 WIN7物理机的环境搭建
  6. 另一个jar包引不了_分手后,男人多久会爱上另一个女人?答案只有两个字
  7. 浅聊与蓝桥渊源,备战数月与百人一起拿下省一是什么体验(国赛训练营开启)
  8. 图文并茂 VLAN 详解,让你看一遍就理解 VLAN
  9. 暴力破解之验证码识别
  10. 外贸日历|2月海外营销日历