精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

C++怎么實現驗證回文字符串

這篇文章主要講解了“C++怎么實現驗證回文字符串”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C++怎么實現驗證回文字符串”吧!

成都創新互聯是一家網站設計公司,集創意、互聯網應用、軟件技術為一體的創意網站建設服務商,主營產品:響應式網站建設、品牌網站建設全網整合營銷推廣。我們專注企業品牌在網站中的整體樹立,網絡互動的體驗,以及在手機等移動端的優質呈現。成都做網站、網站設計、移動互聯產品、網絡運營、VI設計、云產品.運維為核心業務。為用戶提供一站式解決方案,我們深知市場的競爭激烈,認真對待每位客戶,為客戶提供賞析悅目的作品,網站的價值服務。

Valid Palindrome 驗證回文字符串

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.

驗證回文字符串是比較常見的問題,所謂回文,就是一個正讀和反讀都一樣的字符串,比如“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++怎么實現驗證回文字符串”的內容了,經過本文的學習后,相信大家對C++怎么實現驗證回文字符串這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創新互聯,小編將為大家推送更多相關知識點的文章,歡迎關注!


新聞名稱:C++怎么實現驗證回文字符串
轉載來于:http://m.jcarcd.cn/article/gisjsp.html
主站蜘蛛池模板: 日韩电影网 | 国产亚洲午夜福 | 国产综合22p| 国产精品二区亚洲 | 国产极品视觉盛宴 | 精品国产区一区二区 | 日本综合成人社区 | 国产日韩欧美乱码 | 91精品视频网址 | 欧美日韩精品二区 | 97视频精品| 精品综合精品自拍 | 国产网站91 | 国产不卡视频cr | 黑人一级 | 亚洲无码国产一 | 欧美综合图区 | 午夜高清 | 欧美日韩一区观看 | 国产未成 | 福利片+国产+合集 | 乱小说区电影区 | 国产ts在线播放 | 成人福利精品在线 | 欧洲天堂一级 | 97国产精品人人 | 欧美日皮| 99婷婷在线 | 精品国产福利 | 国产激情精品一 | 国产玉足免费观看 | 日本精品视频 | 国际b站免费视频入 | 国产九九热视频 | 午夜影视九九国产 | 欧美性爱一级a | 欧美亚日韩精品影视 | 欧美日韩免费在线 | 国产大片欧美精品 | 成人性生交大 | 日韩欧美一二三 |