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

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

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

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)零 的十進(jìn)制表示不同, 才認(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ù)的十進(jìn)制表示,因為在比較十進(jìn)制值時會忽略前導(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語言簡明講解三目運算符和逗號表達(dá)式的使用

    C語言簡明講解三目運算符和逗號表達(dá)式的使用

    三目運算符,又稱條件運算符,它是唯一有3個操作數(shù)的運算符,有時又稱為三元運算符。三目運算符的結(jié)合性是右結(jié)合的;逗號表達(dá)式,是c語言中的逗號運算符,優(yōu)先級別最低,它將兩個及其以上的式子聯(lián)接起來,從左往右逐個計算表達(dá)式,整個表達(dá)式的值為最后一個表達(dá)式的值
    2022-04-04
  • 基于QT實現(xiàn)簡單的鬧鐘

    基于QT實現(xiàn)簡單的鬧鐘

    這篇文章主要為大家詳細(xì)介紹了如何基于QT實現(xiàn)一個簡單的鬧鐘小程序,文中的示例代碼講解詳細(xì),具有一定的學(xué)習(xí)價值,有需要的小伙伴可以參考一下
    2025-02-02
  • C語言使用setjmp和longjmp實現(xiàn)一個簡單的協(xié)程

    C語言使用setjmp和longjmp實現(xiàn)一個簡單的協(xié)程

    這篇文章主要為大家介紹了C語言使用setjmp和longjmp實現(xiàn)一個簡單的協(xié)程過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • C語言中strlen()函數(shù)的使用詳解

    C語言中strlen()函數(shù)的使用詳解

    strlen函數(shù)是用來求字符串長度的函數(shù),這個函數(shù)遇到‘\0’就會停止,且這個長度不包含‘\0’,這篇文章給大家介紹了C語言中strlen()函數(shù)的使用,感興趣的朋友一起看看吧
    2024-02-02
  • C++ 私有析構(gòu)函數(shù)的作用示例詳解

    C++ 私有析構(gòu)函數(shù)的作用示例詳解

    這篇文章主要介紹了C++ 私有析構(gòu)函數(shù)的作用,私有析構(gòu)函數(shù)不會影響棧上對象的自動析構(gòu),它們會在其作用域結(jié)束時自動調(diào)用析構(gòu)函數(shù)。私有析構(gòu)函數(shù)主要影響的是對堆上對象的顯式刪除操作,需要的朋友可以參考下
    2023-06-06
  • C++類的定義和對象的創(chuàng)建詳解

    C++類的定義和對象的創(chuàng)建詳解

    本篇文章重點講解了兩種創(chuàng)建對象的方式:一種是在棧上創(chuàng)建,形式和定義普通變量類似;另外一種是在堆上使用 new 關(guān)鍵字創(chuàng)建,必須要用一個指針指向它,下面和小編一起來學(xué)習(xí)下面為文章的內(nèi)容
    2021-09-09
  • 用C++的odeint庫求解微分方程

    用C++的odeint庫求解微分方程

    求解微分方程的數(shù)值解一般使用MATLAB等數(shù)值計算軟件,其實C++也可以求解微分方程,需要用到odeint庫,它是boost庫的一部分。官方教程和示例比較晦澀,本文力求用較短的篇幅介紹它的基本用法,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • C++實現(xiàn)LeetCode(53.最大子數(shù)組)

    C++實現(xiàn)LeetCode(53.最大子數(shù)組)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(53.最大子數(shù)組),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • Qt利用ffmpeg實現(xiàn)音視頻同步

    Qt利用ffmpeg實現(xiàn)音視頻同步

    這篇文章主要為大家詳細(xì)介紹了Qt如何利用ffmpeg實現(xiàn)音視頻同步的功能,文中的示例代碼講解詳細(xì),對大家深入了解Qt有一定的幫助,需要的可以參考一下
    2023-01-01
  • 詳解C++編程中的析構(gòu)函數(shù)

    詳解C++編程中的析構(gòu)函數(shù)

    這篇文章主要介紹了C++編程中的析構(gòu)函數(shù),是C++入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-09-09

最新評論

大新县| 武邑县| 成都市| 基隆市| 赤壁市| 报价| 施甸县| 广东省| 道孚县| 安庆市| 武威市| 延吉市| 潼关县| 乌审旗| 墨玉县| 康保县| 上蔡县| 阿拉善盟| 年辖:市辖区| 万年县| 康定县| 沙田区| 水富县| 中山市| 和硕县| 东平县| 共和县| 大同市| 柳江县| 金湖县| 安多县| 克山县| 宜黄县| 黑山县| 枞阳县| 岚皋县| 高碑店市| 安康市| 大竹县| 连南| 南陵县|