最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++ Leetcode實現(xiàn)從英文中重建數(shù)字

 更新時間:2021年11月25日 11:04:33   作者:苦泉  
本文主要介紹了當(dāng)給你一個字符串s,其中包含字母順序打亂的用英文單詞表示的若干數(shù)字(0-9)時,如何通過Leetcode按升序返回原始的數(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)的字符。

  • h 只在 3,8 中出現(xiàn)。由于我們已經(jīng)知道了 8 出現(xiàn)的次數(shù),因此可以計算出 3 出現(xiàn)的次數(shù)。
  • f 只在 4,5 中出現(xiàn)。由于我們已經(jīng)知道了 4 出現(xiàn)的次數(shù),因此可以計算出 5 出現(xiàn)的次數(shù)。
  • s 只在 6,7 中出現(xiàn)。由于我們已經(jīng)知道了 6 出現(xiàn)的次數(shù),因此可以計算出 7 出現(xiàn)的次數(shù)。

此時,只剩下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<char, int> 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<m['z'] ; i++) res += '0';
            int x = m['z'];
            m['z'] -= x;
            m['e'] -= x;
            m['r'] -= x;
            m['o'] -= x;
        }

        // 2
        if(m['w'] > 0)
        {
            int x = m['w'];
            for(int i=0 ; i<x ; i++) res += '2';
            m['t'] -= x;
            m['w'] -= x;
            m['o'] -= x;
        }

        // 4
        if(m['u'] > 0)
        {
            int x = m['u'];
            for(int i=0 ; i<x ; i++) res += '4';
            m['f'] -= x;
            m['o'] -= x;
            m['u'] -= x;
            m['r'] -= x;
        }

        // 5
        if(m['f'] > 0)
        {
            int x = m['f'];
            for(int i=0 ; i<x ; i++) res += '5';
            m['f'] -= x;
            m['i'] -= x;
            m['v'] -= x;
            m['e'] -= x;
        }

        // 6
        if(m['x'] > 0)
        {
            int x = m['x'];
            for(int i=0 ; i<x ; i++) res += '6';
            m['s'] -= x;
            m['i'] -= x;
            m['x'] -= x;
        }

        // 7
        if(m['s'] > 0)
        {
            int x = m['s'];
            for(int i=0 ; i<x ; i++) res += '7';
            m['s'] -= x;
            m['e'] -= x;
            m['v'] -= x;
            m['e'] -= x;
            m['n'] -= x;
        }

        // 8
        if(m['g'] > 0)
        {
            int x = m['g'];
            for(int i=0 ; i<x ; i++) res += '8';
            m['e'] -= x;
            m['i'] -= x;
            m['g'] -= x;
            m['h'] -= x;
            m['t'] -= x;
        }

        // 1
        if(m['o'] > 0)
        {
            int x = m['o'];
            for(int i=0 ; i<x ; i++) res += '1';
            m['o'] -= x;
            m['n'] -= x;
            m['e'] -= x;
        }

        // 3
        if(m['t'] > 0)
        {
            int x = m['t'];
            for(int i=0 ; i<x ; i++) res += '3';
            m['t'] -= x;
            m['h'] -= x;
            m['r'] -= x;
            m['e'] -= x;
            m['e'] -= x;
        }

        // 9
        if(m['i'] > 0)
        {
            int x = m['i'];
            for(int i=0 ; i<x ; i++) res += '9';
            m['n'] -= x;
            m['i'] -= x;
            m['n'] -= x;
            m['e'] -= x;
        }

        sort(res.begin(), res.end());

        return res;
    }
};

C++

官方題解

class Solution {
public:
    string originalDigits(string s) {
        unordered_map<char, int> c;
        for (char ch: s) {
            ++c[ch];
        }

        vector<int> 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<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();
    }
} 

以上就是C++ Leetcode實現(xiàn)從英文中重建數(shù)字的詳細(xì)內(nèi)容,更多關(guān)于C++ Leetcode 英文中重建數(shù)字的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C程序中唯一序列號的生成實例詳解

    C程序中唯一序列號的生成實例詳解

    這篇文章主要介紹了C程序中唯一序列號的生成實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • C語言中強(qiáng)制地址跳轉(zhuǎn)詳解

    C語言中強(qiáng)制地址跳轉(zhuǎn)詳解

    這篇文章主要介紹了C語言中強(qiáng)制地址跳轉(zhuǎn)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Qt實現(xiàn)高準(zhǔn)確率的語音識別

    Qt實現(xiàn)高準(zhǔn)確率的語音識別

    Vosk是一個開源的語音識別工具,支持中英文及多種語言,具備離線識別能力,且不依賴互聯(lián)網(wǎng),本文就來聊聊如何使用Vosk API在C++中進(jìn)行中英文識別吧
    2024-11-11
  • C++在成員函數(shù)中使用STL的find_if函數(shù)實例

    C++在成員函數(shù)中使用STL的find_if函數(shù)實例

    這篇文章主要介紹了C++在成員函數(shù)中使用STL的find_if函數(shù)實例,包括了STL中find_if函數(shù)的具體用法及相關(guān)的完整實例,非常具有參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • 詳解C語言中的動態(tài)內(nèi)存管理

    詳解C語言中的動態(tài)內(nèi)存管理

    對于數(shù)據(jù)的存儲我們可以靜態(tài)存儲,也可以動態(tài)存儲,兩種方式都有自己特有的好處,這篇文章教我們?nèi)绾瓦M(jìn)行動態(tài)的數(shù)據(jù)存儲?。。?!感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-12-12
  • C++中DeviceIoCteatol的用法實例

    C++中DeviceIoCteatol的用法實例

    這篇文章主要介紹了C++中DeviceIoCteatol的用法實例,對于學(xué)習(xí)C++針對硬件的操作有一定的參考借鑒價值,需要的朋友可以參考下
    2014-10-10
  • makefile如何調(diào)用靜態(tài)庫的方法實現(xiàn)

    makefile如何調(diào)用靜態(tài)庫的方法實現(xiàn)

    這篇文章主要介紹了makefile如何調(diào)用靜態(tài)庫的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • C++?TCP網(wǎng)絡(luò)編程詳細(xì)講解

    C++?TCP網(wǎng)絡(luò)編程詳細(xì)講解

    TCP/IP是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,它會保證數(shù)據(jù)不丟包、不亂序。TCP全名是Transmission?Control?Protocol,它是位于網(wǎng)絡(luò)OSI模型中的第四層
    2022-09-09
  • C++ cin速度優(yōu)化詳解

    C++ cin速度優(yōu)化詳解

    這篇文章主要介紹了C++ cin速度優(yōu)化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • opencv2實現(xiàn)10張圖像上下左右拼接融合

    opencv2實現(xiàn)10張圖像上下左右拼接融合

    這篇文章主要為大家詳細(xì)介紹了opencv2實現(xiàn)10張圖像上下左右拼接融合,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評論

社会| 宣威市| 红原县| 湖州市| 巫山县| 蕉岭县| 咸阳市| 南华县| 汶川县| 光山县| 永昌县| 综艺| 门源| 廊坊市| 天水市| 祁阳县| 无锡市| 东光县| 屏山县| 池州市| 涿州市| 交口县| 临沧市| 阳西县| 万全县| 中江县| 建德市| 白河县| 唐河县| 玉龙| 崇仁县| 峨边| 韶山市| 虹口区| 大竹县| 天台县| 开远市| 浮山县| 许昌县| 阿荣旗| 福鼎市|