摘要:每日一題從英文中重建數字鏈接從英文中重建數字題目分析首先我們先分析每個字母的組成,然后發現一些字符只在一個單詞中出現,我們先去統計一下這些單詞個數。統計完次數,按升序排列即可。
首先我們先分析每個字母的組成,然后發現一些字符只在一個單詞中出現,我們先去統計一下這些單詞個數。
z,w,u,x,g
都只出現在一個數字中,也就是0,2,4,6,8
,我們用哈希表統計一下s字符串中各個字符的數量,就可以知道0,2,4,6,8
的數量,然后我們注意一下只在兩個數字中出現的字符。
此時,只剩下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 ; i
C++
官方題解
</>復制代碼
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; }};作者:LeetCode-Solution
Java
</>復制代碼
class Solution { public String originalDigits(String s) { Map<Character, Integer> c = new HashMap<Character, Integer>(); 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(); }}作者:LeetCode-Solution
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/125058.html
相關文章
-
LeetCode 423 從英文中重建數字[數組] HERODING的LeetCode之路
摘要:解題思路首先要明確一點,就是打亂的英文能夠還原成數字,然后觀察表格規律你就能發現,有的數字一個字母就能決定出現。所以我們從單個字母就能知曉的數字出發進行統計,用一個長度的數組來存儲字母個數,然后對每一個數字一一統計,代碼如下 ...
-
leetcode423. Reconstruct Original Digits from Engl
摘要:如對應的英文表達為并繼續亂序成。要求輸入亂序的英文表達式,找出其中包含的所有的數字,并按照從小到大輸出。思路和代碼首先將數字和英文表示列出來粗略一看,我們知道有許多字母只在一個英文數字中出現,比如只出現在中。
題目要求
Given a non-empty string containing an out-of-order English representation of digits...
-
leetcode每日一題-559:N叉樹的最大深度
摘要:每日一題叉樹的最大深度鏈接叉樹的最大深度題目分析簡單的搜索題目。只需要從根節點開始一下整個叉樹就可以得到答案了。主要是對要理解和掌握叉樹的遍歷。代碼作者作者 lee...
-
leetcode每日一題-859:親密字符串
摘要:每日一題親密字符串鏈接親密字符串題目分析題目本身不是很難,但是有不少需要注意的地方,逐一來進行分析。首先如果兩個字符串不一樣長,那么肯定是。 leetcode每日一...
-
leetcode每日一題-563:二叉樹的坡度
摘要:每日一題二叉樹的坡度鏈接二叉樹的坡度題目分析簡單的問題。首先明確思路,我們需要遍歷每一個點,然后求出該點左右子樹的值的總和,然后做差,答案累計這個差值即可。 lee...
發表評論
0條評論
kyanag
男|高級講師
TA的文章
閱讀更多
leetcode每日一題-423:從英文中重建數字
閱讀 2662·2021-11-25 09:43
<LeetCode天梯>Day023 最長公共前綴(切片法) | 初級算法 | Python
閱讀 680·2021-11-12 10:36
Name.com:新用戶送5美元優惠券,首次注冊享85折,注冊.me域名5折,另有.com、.net
閱讀 4648·2021-11-08 13:18
項目五:基于stm32f103的尋跡小車
閱讀 2188·2021-09-06 15:00
上天的Node.js之爬蟲篇 15行代碼爬取京東淘寶資源 【深入淺出】
閱讀 3124·2019-08-30 15:56
vscode常用插件【全了】
閱讀 942·2019-08-30 13:57
干貨|人人都是翻譯項目的Master
閱讀 1998·2019-08-30 13:48
object-fit
閱讀 1423·2019-08-30 11:13
閱讀需要支付1元查看
<