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

C++實現(xiàn)無重復字符的最長子串

 更新時間:2021年07月28日 09:48:53   作者:IT-菜鳥  
本文主要介紹了C++實現(xiàn)無重復字符的最長子串,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

題目及要求:

給定一個字符串 s ,請你找出其中不含有重復字符的 最長子串 的長度。

提示:

0 <= s.length <= 5 * 104
s 由英文字母、數(shù)字、符號和空格組成

原創(chuàng)代碼:

class Solution {
public:
    int lengthOfLongestSubstring(string s) 
    {
        int begin=0;//每個當前子串的開頭
        int end=0;//每個當前子串的末尾
        int value=0;//判斷下一個字符是否屬于當前子串
        int max=0;//記錄歷史字串的最大元素個數(shù)
        int now=0;//儲存當前字串的元素個數(shù)
        string str;//代表當前字串
        if(s.size()==0)
        return 0;
        while(end<=(s.size()-1))
        {
            value=str.find(s[end],0);
            if(value!=-1)
            {
                str.erase(0,value+1);
                begin=end-(str.size()-value);
            }
            str.push_back(s[end]);
            now=str.size();
            max=now>max?now:max;
            end++;   
        }
        return max;
    }
};

 輸出示例:
示例 1:
輸入: s = “abcabcbb”
輸出: 3
解釋: 因為無重復字符的最長子串是 “abc”,所以其長度為 3。
示例 2:
輸入: s = “bbbbb”
輸出: 1
解釋: 因為無重復字符的最長子串是 “b”,所以其長度為 1。
示例 3:
輸入: s = “pwwkew”
輸出: 3
解釋: 因為無重復字符的最長子串是 “wke”,所以其長度為 3。
請注意,你的答案必須是 子串 的長度,“pwke” 是一個子序列,不是子串。
示例 4:
輸入: s = “”
輸出: 0

代碼思路:

首先:

定義變量

int begin=0;//每個當前子串的開頭
int end=0;//每個當前子串的開頭
int value=0;//判斷下一個字符是否屬于當前子串
int max=0;//記錄歷史字串的最大元素個數(shù)
int now=0;//儲存當前字串的元素個數(shù)
string str;//代表當前字串

其次:
通過以下條件判斷形參string s是否為空字符串

if(s.size()==0)
return 0;

再其次:
若形參string s不是空字符串,由于

int end=0;//每個當前子串的末尾

則用end來引入新元素,每判斷一次新元素與當前子串的關(guān)系,則end++

最后:
若新元素與當前的關(guān)系表明新元素不與當前子串內(nèi)的元素重復則直接將新元素加入子串,若新元素與當前的關(guān)系表明新元素與當前子串內(nèi)的元素重復則將子串含有沖突元素的前半部分刪除并將新元素加入到當前子串

反思所得:
在本次編程過程中我經(jīng)常出現(xiàn)提示堆棧內(nèi)存溢出的問題,之后發(fā)現(xiàn)是對形參string s是空字符串的情況沒加以控制,在未來的編程中我會更加注意。
而且我還學會了利用條件運算符來記錄記錄歷史字串的最大元素個數(shù),即

max=now>max?now:max;

LeetCode鏈接:
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

到此這篇關(guān)于C++實現(xiàn)無重復字符的最長子串的文章就介紹到這了,更多相關(guān)C++ 無重復字符的最長子串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解C++中動態(tài)內(nèi)存管理

    一文詳解C++中動態(tài)內(nèi)存管理

    這篇文章主要介紹了一文詳解C++中動態(tài)內(nèi)存管理,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價孩子沒需要的朋友可以才可以參考一下
    2022-07-07
  • C++如何通過ostringstream實現(xiàn)任意類型轉(zhuǎn)string

    C++如何通過ostringstream實現(xiàn)任意類型轉(zhuǎn)string

    再使用整型轉(zhuǎn)string的時候感覺有點棘手,因為itoa不是標準C里面的,而且即便是有itoa,其他類型轉(zhuǎn)string不是很方便。后來去網(wǎng)上找了一下,發(fā)現(xiàn)有一個好方法
    2013-09-09
  • C語言實現(xiàn)順序表基本操作匯總

    C語言實現(xiàn)順序表基本操作匯總

    這篇文章主要介紹了C語言實現(xiàn)順序表基本操作匯總,對學習數(shù)據(jù)結(jié)構(gòu)的朋友有一定的借鑒價值,需要的朋友可以參考下
    2014-07-07
  • Ubuntu18.04上安裝Qt5.10的步驟實踐

    Ubuntu18.04上安裝Qt5.10的步驟實踐

    Qt是一個跨平臺的C++圖形用戶界面庫,本文就介紹了Ubuntu18.04上安裝Qt5.10的步驟實踐,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C++ primer基礎之容器insert

    C++ primer基礎之容器insert

    這篇文章主要介紹了C++ primer基礎之容器insert的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • QT實戰(zhàn)之實現(xiàn)圖片瀏覽系統(tǒng)

    QT實戰(zhàn)之實現(xiàn)圖片瀏覽系統(tǒng)

    這篇文章主要介紹了如何利用QT編寫一個圖片瀏覽系統(tǒng),可以支持自動播放,左右拖動切換,點擊列表切換,點擊按鈕切換等功能,感興趣的小伙伴可以跟隨小編一起了解一下
    2023-04-04
  • C/C++合并兩個升序鏈表的方式

    C/C++合并兩個升序鏈表的方式

    這篇文章主要介紹了C/C++合并兩個升序鏈表的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • C語言實現(xiàn)高精度減法

    C語言實現(xiàn)高精度減法

    高精度的本質(zhì)是將數(shù)字以字符串的形式讀入,然后將每一位分別存放入int數(shù)組中,通過模擬每一位的運算過程,來實現(xiàn)最終的運算效果,下面我們就來看看C語言如何實現(xiàn)高精度減法吧
    2023-11-11
  • 詳解C++中指針和引用的區(qū)別

    詳解C++中指針和引用的區(qū)別

    這篇文章主要介紹了C++中指針和引用的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • C++調(diào)用Go方法的字符串傳遞問題及解決方案

    C++調(diào)用Go方法的字符串傳遞問題及解決方案

    這篇文章主要介紹了C++調(diào)用Go方法的字符串傳遞問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11

最新評論

高阳县| 浦东新区| 将乐县| 宿松县| 祁门县| 丽水市| 南汇区| 天峻县| 枣强县| 长岭县| 黔西县| 会理县| 安溪县| 梅州市| 马龙县| 房山区| 广平县| 蓝田县| 湘乡市| 南郑县| 隆安县| 海城市| 资兴市| 周至县| 高平市| 大姚县| 赣榆县| 宁明县| 广灵县| 商城县| 长阳| 汽车| 绍兴县| 呈贡县| 阳城县| 长宁区| 临沧市| 富源县| 应城市| 莎车县| 新竹市|