C++ Leetcode如何实现从英文中重建数字
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,本篇文章给大家分享的是有关C++ Leetcode如何实现从英文中重建数字,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。题目分析首先我们
千家信息网最后更新 2025年11月13日C++ Leetcode如何实现从英文中重建数字
本篇文章给大家分享的是有关C++ Leetcode如何实现从英文中重建数字,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
题目
分析
首先我们先分析每个字母的组成,然后发现一些字符只在一个单词中出现,我们先去统计一下这些单词个数。
z,w,u,x,g都只出现在一个数字中,也就是0,2,4,6,8,我们用哈希表统计一下s字符串中各个字符的数量,就可以知道0,2,4,6,8的数量,然后我们注意一下只在两个数字中出现的字符。
h 只在 3,8 中出现。由于我们已经知道了 8 出现的次数,因此可以计算出 3 出现的次数。
f 只在 4,5 中出现。由于我们已经知道了 4 出现的次数,因此可以计算出 5 出现的次数。
s 只在 6,7 中出现。由于我们已经知道了 6 出现的次数,因此可以计算出 7 出现的次数。
此时,只剩下1和9还不知道,但是字符含有o的其他数字我们都已经知道了,那么剩下的数量就是1的数量。
然后此时含有i的就只有9了,统计一下9的数量即可。
统计完次数,按升序排列即可。
代码
C++
我的代码
class Solution {public: string originalDigits(string s) { unordered_map m; string nums[10] = {"zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"}; string res; for(char ch : s) m[ch]++; // 0 if(m['z'] > 0) { for(int i=0 ; i 0) { int x = m['w']; for(int i=0 ; i 0) { int x = m['u']; for(int i=0 ; i 0) { int x = m['f']; for(int i=0 ; i 0) { int x = m['x']; for(int i=0 ; i 0) { int x = m['s']; for(int i=0 ; i 0) { int x = m['g']; for(int i=0 ; i 0) { int x = m['o']; for(int i=0 ; i 0) { int x = m['t']; for(int i=0 ; i 0) { int x = m['i']; for(int i=0 ; iC++
官方题解
class Solution {public: string originalDigits(string s) { unordered_map c; for (char ch: s) { ++c[ch]; } vector cnt(10); cnt[0] = c['z']; cnt[2] = c['w']; cnt[4] = c['u']; cnt[6] = c['x']; cnt[8] = c['g']; cnt[3] = c['h'] - cnt[8]; cnt[5] = c['f'] - cnt[4]; cnt[7] = c['s'] - cnt[6]; cnt[1] = c['o'] - cnt[0] - cnt[2] - cnt[4]; cnt[9] = c['i'] - cnt[5] - cnt[6] - cnt[8]; string ans; for (int i = 0; i < 10; ++i) { for (int j = 0; j < cnt[i]; ++j) { ans += char(i + '0'); } } return ans; }}; Java
class Solution { public String originalDigits(String s) { Map c = new HashMap(); for (int i = 0; i < s.length(); ++i) { char ch = s.charAt(i); c.put(ch, c.getOrDefault(ch, 0) + 1); } int[] cnt = new int[10]; cnt[0] = c.getOrDefault('z', 0); cnt[2] = c.getOrDefault('w', 0); cnt[4] = c.getOrDefault('u', 0); cnt[6] = c.getOrDefault('x', 0); cnt[8] = c.getOrDefault('g', 0); cnt[3] = c.getOrDefault('h', 0) - cnt[8]; cnt[5] = c.getOrDefault('f', 0) - cnt[4]; cnt[7] = c.getOrDefault('s', 0) - cnt[6]; cnt[1] = c.getOrDefault('o', 0) - cnt[0] - cnt[2] - cnt[4]; cnt[9] = c.getOrDefault('i', 0) - cnt[5] - cnt[6] - cnt[8]; StringBuffer ans = new StringBuffer(); for (int i = 0; i < 10; ++i) { for (int j = 0; j < cnt[i]; ++j) { ans.append((char) (i + '0')); } } return ans.toString(); }} 以上就是C++ Leetcode如何实现从英文中重建数字,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
次数
数字
字符
数量
统计
C++
英文
代码
单词
就是
更多
知识
篇文章
分析
实用
两个
个数
也就是
升序
只有
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库考试题桂林理工大学
思科服务器mcu安装方法
数据库空间文案高质量
新时代的网络安全培训
东阳电商软件开发
在公司搭建小型服务器
杭州市神舟网络技术有限公司
软件开发公司成本包括什么
部署服务器
某学校网络安全设计
西安app软件开发公司
多个服务器一个数据库
数据库常用的存储方法是
企业网络安全规则考核表
方舟手游怎么找回以前的服务器
如何把VF多个数据库合并为一个
应用软件开发是什么意思
数据库的备份和恢复设计
下一代通信网络技术的内容
广东网警网络安全无小事
苹果手机长沙银行软件开发
国外互联网科技有限公司
网络安全的行动指引
上海互联网科技创新园
我的世界服务器指令做圆
英语作文网络安全100字
蓬莱巨人软件开发公司
软件开发迭代的理解
武林闲侠服务器满人
辽宁软件开发报价机构