91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C++驗證回文字符串

發布時間:2022-10-14 15:44:53 來源:億速云 閱讀:142 作者:iii 欄目:編程語言

本篇內容介紹了“怎么使用C++驗證回文字符串”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

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

時間復雜度為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;
    }
};

我們也可以用系統自帶的判斷是否是數母字符的判斷函數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;
    }
};

“怎么使用C++驗證回文字符串”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

c++
AI

射洪县| 且末县| 开封县| 冷水江市| 德阳市| 成武县| 陆丰市| 靖西县| 呼玛县| 三原县| 兴业县| 清涧县| 图们市| 河北区| 永吉县| 廉江市| 六盘水市| 清苑县| 亳州市| 民权县| 辽宁省| 吉水县| 霍城县| 山东省| 长海县| 孟连| 景泰县| 板桥市| 皮山县| 巴青县| 天全县| 治县。| 赤峰市| 册亨县| 梁山县| 武乡县| 成都市| 磐安县| 瓮安县| 北安市| 获嘉县|