摘要:每日一題從英文中重建數(shù)字鏈接從英文中重建數(shù)字題目分析首先我們先分析每個字母的組成,然后發(fā)現(xiàn)一些字符只在一個單詞中出現(xiàn),我們先去統(tǒng)計一下這些單詞個數(shù)。統(tǒng)計完次數(shù),按升序排列即可。
首先我們先分析每個字母的組成,然后發(fā)現(xiàn)一些字符只在一個單詞中出現(xiàn),我們先去統(tǒng)計一下這些單詞個數(shù)。
z,w,u,x,g
都只出現(xiàn)在一個數(shù)字中,也就是0,2,4,6,8
,我們用哈希表統(tǒng)計一下s字符串中各個字符的數(shù)量,就可以知道0,2,4,6,8
的數(shù)量,然后我們注意一下只在兩個數(shù)字中出現(xiàn)的字符。
此時,只剩下1和9還不知道,但是字符含有o
的其他數(shù)字我們都已經(jīng)知道了,那么剩下的數(shù)量就是1的數(shù)量。
然后此時含有i
的就只有9了,統(tǒng)計一下9的數(shù)量即可。
統(tǒng)計完次數(shù),按升序排列即可。
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
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/125058.html
摘要:解題思路首先要明確一點(diǎn),就是打亂的英文能夠還原成數(shù)字,然后觀察表格規(guī)律你就能發(fā)現(xiàn),有的數(shù)字一個字母就能決定出現(xiàn)。所以我們從單個字母就能知曉的數(shù)字出發(fā)進(jìn)行統(tǒng)計,用一個長度的數(shù)組來存儲字母個數(shù),然后對每一個數(shù)字一一統(tǒng)計,代碼如下 ...
摘要:如對應(yīng)的英文表達(dá)為并繼續(xù)亂序成。要求輸入亂序的英文表達(dá)式,找出其中包含的所有的數(shù)字,并按照從小到大輸出。思路和代碼首先將數(shù)字和英文表示列出來粗略一看,我們知道有許多字母只在一個英文數(shù)字中出現(xiàn),比如只出現(xiàn)在中。 題目要求 Given a non-empty string containing an out-of-order English representation of digits...
摘要:每日一題叉樹的最大深度鏈接叉樹的最大深度題目分析簡單的搜索題目。只需要從根節(jié)點(diǎn)開始一下整個叉樹就可以得到答案了。主要是對要理解和掌握叉樹的遍歷。代碼作者作者 lee...
摘要:每日一題親密字符串鏈接親密字符串題目分析題目本身不是很難,但是有不少需要注意的地方,逐一來進(jìn)行分析。首先如果兩個字符串不一樣長,那么肯定是。 leetcode每日一...
摘要:每日一題二叉樹的坡度鏈接二叉樹的坡度題目分析簡單的問題。首先明確思路,我們需要遍歷每一個點(diǎn),然后求出該點(diǎn)左右子樹的值的總和,然后做差,答案累計這個差值即可。 lee...
閱讀 2650·2021-11-25 09:43
閱讀 670·2021-11-12 10:36
閱讀 4615·2021-11-08 13:18
閱讀 2167·2021-09-06 15:00
閱讀 3106·2019-08-30 15:56
閱讀 923·2019-08-30 13:57
閱讀 1984·2019-08-30 13:48
閱讀 1412·2019-08-30 11:13