亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C++ LeetCode1805字符串不同整數(shù)數(shù)目

 更新時間:2022年12月16日 14:35:34   作者:LetMeFly  
這篇文章主要為大家介紹了C++ LeetCode1805字符串不同整數(shù)數(shù)目,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

LeetCode 1805.字符串中不同整數(shù)的數(shù)目

力扣題目鏈接:leetcode.cn/problems/nu…

給你一個字符串 word ,該字符串由數(shù)字和小寫英文字母組成。

請你用空格替換每個不是數(shù)字的字符。例如,"a123bc34d8ef34" 將會變成 " 123  34 8  34" 。注意,剩下的這些整數(shù)為(相鄰彼此至少有一個空格隔開):"123"、"34"、"8""34" 。

返回對 word 完成替換后形成的 不同 整數(shù)的數(shù)目。

只有當(dāng)兩個整數(shù)的 不含前導(dǎo)零 的十進制表示不同, 才認(rèn)為這兩個整數(shù)也不同。

示例 1:

輸入:word = "a123bc34d8ef34"
輸出:3
解釋:不同的整數(shù)有 "123"、"34" 和 "8" 。注意,"34" 只計數(shù)一次。

示例 2:

輸入:word = "leet1234code234"
輸出:2

示例 3:

輸入:word = "a1b01c001"
輸出:1
解釋:"1"、"01" 和 "001" 視為同一個整數(shù)的十進制表示,因為在比較十進制值時會忽略前導(dǎo)零的存在。

提示:

  • 1 <= word.length <= 1000
  • word 由數(shù)字和小寫英文字母組成

方法一:遍歷拆分

這個問題主要包括三部分:

  • 將數(shù)字從字符串中抽取出來
  • 將數(shù)字的前導(dǎo)零去除
  • 數(shù)字的去重與計數(shù)

接下來逐個解決這三個問題

1. 將數(shù)字從字符串中提取出來:

我們需要一個布爾類型的變量“lastIsNum”來記錄上一個字符是否為數(shù)字。初始值為false

同時,我們還需要一個字符串,用來存儲整個字符串中的某個數(shù)字。string thisString

接下來遍歷字符串。若字符串遍歷結(jié)束或者遍歷到字母字符時,將lastIsNum標(biāo)記為true,否則將lastIsNum標(biāo)記為false

如果這個字符是字母,但上一個字符是數(shù)字,那么就說明我們找到了“一個數(shù)字的末尾”,此時我們就提取出了這個數(shù)字。

處理完這個數(shù)字記得將字符串清空。

如果這個字符是數(shù)字,那么直接無腦添加數(shù)字字符串thisString的末尾即可。

2. 將數(shù)字的前導(dǎo)零去除:

使用一個整數(shù)類型的變量firstLoc來記錄一個數(shù)字第一個非零的位置,初始值為-1

接著遍歷數(shù)字字符串,遇到第一個非零數(shù)字就結(jié)束遍歷,并將firstLoc修改為遍歷到的位置。

如果最后firstLoc的值仍未-1,那么就說明整個數(shù)字字符串全是0

否則,從firstLoc開始到字符串末尾所組成的子串即為去除前導(dǎo)零后的數(shù)字字符串

3. 數(shù)字的去重與統(tǒng)計:

題目問的是“有多少不同的數(shù)字”,這就需要我們對所有的數(shù)字做去重處理。

這個過程很簡單,直接使用一個哈希表即可

將所有的處理過的數(shù)字字符串放入哈希表,最后返回哈希表的大小即為去重后的結(jié)果。

  • 時間復(fù)雜度O(len(word))
  • 空間復(fù)雜度O(len(word))

AC代碼

C++

class Solution {
private:
    unordered_set<string> se;

    void insert(string toInsert) {
        int firstLoc = -1;
        for (int i = 0; i < toInsert.size(); i++) {
            if (toInsert[i] != '0') {
                firstLoc = i;
                break;
            }
        }
        if (firstLoc == -1)
            se.insert("0");
        else
            se.insert(toInsert.substr(firstLoc));
    }
public:
    int numDifferentIntegers(string word) {
        bool lastIsNum = false;
        string thisString;
        int n = word.size();
        for (int i = 0; i <= n; i++) {
            if (i == n || isalpha(word[i])) {
                if (lastIsNum) {
                    lastIsNum = false;
                    insert(thisString);
                    thisString.clear();
                }
            }
            else {
                thisString += word[i];
                lastIsNum = true;
            }
        }
        return se.size();
    }
};

以上就是C++ LeetCode1805字符串不同整數(shù)數(shù)目的詳細(xì)內(nèi)容,更多關(guān)于C++ 字符串不同整數(shù)數(shù)目的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C字符串函數(shù)對應(yīng)的C++ string操作詳解

    C字符串函數(shù)對應(yīng)的C++ string操作詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于C字符串函數(shù)對應(yīng)的C++ string操作知識點內(nèi)容,有興趣的朋友們學(xué)習(xí)下。
    2020-01-01
  • C++ BloomFilter布隆過濾器應(yīng)用及概念詳解

    C++ BloomFilter布隆過濾器應(yīng)用及概念詳解

    布隆過濾器是由布?。˙urton Howard Bloom)在1970年提出的 一種緊湊型的、比較巧妙的概率型數(shù)據(jù)結(jié)構(gòu),特點是高效地插入和查詢,可以用來告訴你 “某樣?xùn)|西一定不存在或者可能存在”,它是用多個哈希函數(shù),將一個數(shù)據(jù)映射到位圖結(jié)構(gòu)中
    2023-03-03
  • C++中的函數(shù)修飾符深入講解

    C++中的函數(shù)修飾符深入講解

    這篇文章主要給大家介紹了關(guān)于C++中函數(shù)修飾符的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • C++ xxx_cast實現(xiàn)轉(zhuǎn)換代碼實例解析

    C++ xxx_cast實現(xiàn)轉(zhuǎn)換代碼實例解析

    這篇文章主要介紹了C++xxx_cast轉(zhuǎn)換代碼實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-07-07
  • C++如何實現(xiàn)簡單的計時器詳解

    C++如何實現(xiàn)簡單的計時器詳解

    因為最近閑著無聊就想著要不用C++寫點什么東西,仔細(xì)想了想其實自己的C++學(xué)的也不怎么好,寫個簡單的計時器吧!所以下面這篇文章主要介紹了利用C++如何實現(xiàn)簡單的計時器,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-01-01
  • C語言 指針綜合解析

    C語言 指針綜合解析

    指針可以表示一個變更的地址,在計算機程序中,通常表示內(nèi)存地址,存儲數(shù)據(jù)的地址,下面這篇文章主要給大家綜合的介紹了關(guān)于C語言指針的本質(zhì)與用法
    2021-11-11
  • C語言實現(xiàn)模擬銀行系統(tǒng)

    C語言實現(xiàn)模擬銀行系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)模擬銀行系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • C++實現(xiàn)LeetCode(79.詞語搜索)

    C++實現(xiàn)LeetCode(79.詞語搜索)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(79.詞語搜索),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 解析C++中的虛擬函數(shù)及其靜態(tài)類型和動態(tài)類型

    解析C++中的虛擬函數(shù)及其靜態(tài)類型和動態(tài)類型

    虛擬函數(shù)(Visual Function)亦常被成為虛函數(shù),是C++中的一個重要特性,本文我們就來解析C++中的虛擬函數(shù)及其靜態(tài)類型和動態(tài)類型
    2016-06-06
  • C語言代碼實現(xiàn)簡單的掃雷小游戲

    C語言代碼實現(xiàn)簡單的掃雷小游戲

    這篇文章主要為大家詳細(xì)介紹了C語言代碼實現(xiàn)簡單的掃雷小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03

最新評論