题目:

给你一个字符串 s ,其中包含字母顺序打乱的用英文单词表示的若干数字(0-9)。按 升序 返回原始的数字。

示例 1:

输入:s = "owoztneoer"
输出:"012"
示例 2:

输入:s = "fviefuro"
输出:"45"

提示:

1 <= s.length <= 105
s[i] 为 ["e","g","f","i","h","o","n","s","r","u","t","w","v","x","z"] 这些字符之一
s 保证是一个符合题目要求的字符串

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reconstruct-original-digits-from-english
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

1.首先对每个字母进行词频统计;

2.可以观察出:

  • z,w,u,x,g都只在0,2,4,6,8中出现,故这几个字母出现几次,这几个数字就出现几次;
  • h只有3和8中出现,已知8的次数,可以得知3的次数;
  • f只有4和5中出现,已知4的次数,可以得知5的次数;
  • s只有6和7中出现,已知6的次数,可以得知7的次数;
  • o有0、1、2、4中出现,前面已知0、2、4的次数,可以得知1的次数;
  • i有5、6、8、9中出现,前面已知5、6、8的次数,可以得知9的次数。

3.然后按照升序进行添加,最后转换成字符串进行返回。

 代码:

  1. 1 class Solution {
  2. 2 public String originalDigits(String s) {
  3. 3 int[] count = new int[26];
  4. 4 for(int i = 0; i< s.length(); i++){
  5. 5 count[s.charAt(i) - 'a'] ++;
  6. 6 }
  7. 7 int[] num = new int[10];
  8. 8 num[0] = count['z' - 'a'];
  9. 9 num[2] = count['w' - 'a'];
  10. 10 num[6] = count['x' - 'a'];
  11. 11 num[8] = count['g' - 'a'];
  12. 12 num[4] = count['u' - 'a'];
  13. 13 num[3] = count['h' - 'a'] - num[8];
  14. 14 num[5] = count['f' - 'a'] - num[4];
  15. 15 num[7] = count['s' - 'a'] - num[6];
  16. 16 num[1] = count['o' - 'a'] - num[0] - num[2] - num[4];
  17. 17 num[9] = count['i' - 'a'] - num[5] - num[6] - num[8];
  18. 18 StringBuffer res = new StringBuffer();
  19. 19 for(int i = 0 ; i < 10; i++){
  20. 20 for(int j = num[i]; j > 0; j--){
  21. 21 res.append(i);
  22. 22 }
  23. 23 }
  24. 24 return res.toString();
  25. 25
  26. 26 }
  27. 27 }

力扣423(java)-从英文中重建数字(中等)的更多相关文章

  1. Java实现 LeetCode 423 从英文中重建数字

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

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

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

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

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

  4. [LeetCode] Reconstruct Original Digits from English 从英文中重建数字

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  5. [Swift]LeetCode423. 从英文中重建数字 | Reconstruct Original Digits from English

    Given a non-empty string containing an out-of-order English representation of digits 0-9, output the ...

  6. java截取字符串中的数字

    java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...

  7. java从字符串中提取数字的简单实例

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...

  8. java从字符串中提取数字

    string类函数的补充说明: trim()方法返回调用字符串对象的一个副本,但是所有起始和结尾的空格都被删除了,例子如下:String s=" Hello World ".tri ...

  9. java 获取String中的数字

    随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取出来呢?大致有以下几种方法, ...

  10. java 从String中匹配数字,并提取数字

    方法如下: private List<FieldList> GetTmpFieldsList(List<String> FieldsList,String tmptableNa ...

随机推荐

  1. etcd每个节点都存储了完整的键值对数据集,为什么扩容etcd集群仍可分散存储压力?

    etcd每个节点都存储了完整的键值对数据集,这主要是为了确保数据的一致性和高可用性.在这种设计下,任何一个节点都可以处理读取请求,并在本地提供数据,从而无需跨节点通信.这种冗余的数据存储方式也增加了系 ...

  2. Redis 八种常用数据类型详解

    夯实基础,这篇文章带着大家回顾一下 Redis 中的 8 种常用数据类型: 5 种基础数据类型:String(字符串).List(列表).Set(集合).Hash(散列).Zset(有序集合). 3 ...

  3. Windows App SDK? C++/WinRT? 狗都不学!

    空荡荡的官网开发文档,打开直接心凉一截! 只写个Hello World教程就敢宣布自己为"跨时代"新产品? 什么"C++桌面开发者的狂欢"?什么Project ...

  4. 自我总结的git的使用

    git是什么 git是一个分布式版本控制工具,github是代码托管平台. git有什么用 保存文件的所有修改记录 使用版本号进行区分 随时可浏览历史版本记录 可还原到历史指定版本 对比不同版本的文件 ...

  5. js实现展开多级数组

    1.递归 function steamrollArray(arr) { let res = [] for (const a of arr) { if(a instanceof Array){ res ...

  6. Ubuntu如何进救援模式

    linux的救援模式-1 详解在 Ubuntu 中引导到救援模式或紧急模式 这篇教程将介绍如何在 Ubuntu 22.04.20.04 和 18.04 LTS 版本中引导到 救援Rescue 模式或 ...

  7. FLTK基于cmake编译以及使用(Windows、macOS以及Linux)

    最近因为一些学习的原因,需要使用一款跨平台的轻量级的GUI+图像绘制 C/C++库.经过一番调研以后,最终从GTK+.FLTK中选出了FLTK,跨平台.够轻量.本文将在Windows.macOS以及L ...

  8. 优化您的部署:Docker 镜像最佳实践

    介绍 在快速发展的软件开发和部署领域,Docker 已成为容器化的强大工具,为打包.分发和运行应用程序提供了一种标准化的高效方式.Docker 镜像在这一过程中发挥着至关重要的作用,是容器化应用程序的 ...

  9. Vue3.0里为什么要用 Proxy API 替代 defineProperty API ?

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 一.Object.defineProperty 定义:Object.defineProperty() 方法会直接在一个对象上定义一个新属性 ...

  10. [HTML、CSS]细节、经验

    [版权声明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://blog.csdn.net/m0_69908381/article/details/130134573 出自[进步* ...