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

C++實(shí)現(xiàn)LeetCode(125.驗(yàn)證回文字符串)

 更新時(shí)間:2021年07月27日 14:24:13   作者:Grandyang  
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(驗(yàn)證回文字符串).本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下

[LeetCode] 125.Valid Palindrome 驗(yàn)證回文字符串

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.

For example,
"A man, a plan, a canal: Panama" is a palindrome.
"race a car" is not a palindrome.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.

驗(yàn)證回文字符串是比較常見的問題,所謂回文,就是一個(gè)正讀和反讀都一樣的字符串,比如“l(fā)evel”或者“noon”等等就是回文串。但是這里,加入了空格和非字母數(shù)字的字符,增加了些難度,但其實(shí)原理還是很簡單:只需要建立兩個(gè)指針,left和right, 分別從字符的開頭和結(jié)尾處開始遍歷整個(gè)字符串,如果遇到非字母數(shù)字的字符就跳過,繼續(xù)往下找,直到找到下一個(gè)字母數(shù)字或者結(jié)束遍歷,如果遇到大寫字母,就將其轉(zhuǎn)為小寫。等左右指針都找到字母數(shù)字時(shí),比較這兩個(gè)字符,若相等,則繼續(xù)比較下面兩個(gè)分別找到的字母數(shù)字,若不相等,直接返回false. 

時(shí)間復(fù)雜度為O(n), 代碼如下:

解法一:

class Solution {
public:
    bool isPalindrome(string s) {
        int left = 0, right = s.size() - 1 ;
        while (left < right) {
            if (!isAlphaNum(s[left])) ++left;
            else if (!isAlphaNum(s[right])) --right;
            else if ((s[left] + 32 - 'a') %32 != (s[right] + 32 - 'a') % 32) return false;
            else {
                ++left; --right;
            }
        }
        return true;
    }
    bool isAlphaNum(char &ch) {
        if (ch >= 'a' && ch <= 'z') return true;
        if (ch >= 'A' && ch <= 'Z') return true;
        if (ch >= '0' && ch <= '9') return true;
        return false;
    }
};

我們也可以用系統(tǒng)自帶的判斷是否是數(shù)母字符的判斷函數(shù)isalnum,參見代碼如下;

解法二:

class Solution {
public:
    bool isPalindrome(string s) {
        int left = 0, right = s.size() - 1 ;
        while (left < right) {
            if (!isalnum(s[left])) ++left;
            else if (!isalnum(s[right])) --right;
            else if ((s[left] + 32 - 'a') %32 != (s[right] + 32 - 'a') % 32) return false;
            else {
                ++left; --right;
            }
        }
        return true;
    }
};

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

相關(guān)文章

  • C++內(nèi)存管理面經(jīng)

    C++內(nèi)存管理面經(jīng)

    這篇文章主要介紹了C++的內(nèi)存分配方式以及介紹了下棧和堆的區(qū)別,感興趣的小伙伴可以參考閱讀本文
    2023-03-03
  • C語言中free函數(shù)的使用詳解

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

    free函數(shù)是釋放之前某一次malloc函數(shù)申請的空間,而且只是釋放空間,并不改變指針的值。下面我們就來詳細(xì)探討下
    2017-05-05
  • 深入理解c++20 concepts

    深入理解c++20 concepts

    本文主要介紹了深入理解c++20 concepts,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 標(biāo)準(zhǔn)C++類string的Copy-On-Write技術(shù)

    標(biāo)準(zhǔn)C++類string的Copy-On-Write技術(shù)

    這里,我想從C++類或是設(shè)計(jì)模式的角度為各位揭開Copy-On-Write技術(shù)在string中實(shí)現(xiàn)的面紗,以供各位在用C++進(jìn)行類庫設(shè)計(jì)時(shí)做一點(diǎn)參考
    2013-11-11
  • QT TCP實(shí)現(xiàn)簡單的通信示例

    QT TCP實(shí)現(xiàn)簡單的通信示例

    這篇文章主要為大家詳細(xì)介紹了QT TCP簡單的通信示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++類與對象深入之引用與內(nèi)聯(lián)函數(shù)與auto關(guān)鍵字及for循環(huán)詳解

    C++類與對象深入之引用與內(nèi)聯(lián)函數(shù)與auto關(guān)鍵字及for循環(huán)詳解

    朋友們好,這篇播客我們繼續(xù)C++的初階學(xué)習(xí),現(xiàn)在對一些C++的入門知識做了些總結(jié),整理出來一篇博客供我們一起復(fù)習(xí)和學(xué)習(xí),如果文章中有理解不當(dāng)?shù)牡胤?還希望朋友們在評論區(qū)指出,我們相互學(xué)習(xí),共同進(jìn)步
    2022-06-06
  • c++11 新特性——智能指針使用詳解

    c++11 新特性——智能指針使用詳解

    這篇文章主要介紹了c++11 新特性——智能指針使用的相關(guān)資料,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2021-02-02
  • 使用C++實(shí)現(xiàn)FTP上傳和下載

    使用C++實(shí)現(xiàn)FTP上傳和下載

    當(dāng)在Windows上使用C++進(jìn)行FTP上傳和下載時(shí),您可以使用libcurl庫來簡化操作,本文將為大家詳細(xì)介紹具體步驟,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-12-12
  • C++模板類的用法

    C++模板類的用法

    這篇文章主要介紹了C++模板類的用法,實(shí)例講述了模板類的概念及相關(guān)用法,需要的朋友可以參考下
    2014-10-10
  • C語言編程C++自定義個(gè)性化類型

    C語言編程C++自定義個(gè)性化類型

    這篇文章主要介紹了C語言編程中如何來自定義C++個(gè)性化類型,文中附含詳細(xì)的示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-09-09

最新評論