125. Valid Palindrome
創(chuàng)新互聯(lián)從2013年創(chuàng)立,先為海陽等服務建站,海陽等地企業(yè),進行企業(yè)商務咨詢服務。為海陽企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
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.
題目大意:
回文的檢測。
思路:
1.清洗字符串,得到只有數(shù)字和字母的字符串。
2.通過比較首尾的字符來判斷。
代碼如下:
class Solution { public: vector<string> stringSplit(string s, const char * split) { vector<string> result; const int sLen = s.length(); char *cs = new char[sLen + 1]; strcpy(cs, s.data()); char *p; p = strtok(cs, split); while (p) { printf("%s\n", p); string tmp(p); result.push_back(tmp); p = strtok(NULL, split); } return result; } bool isPalindrome(string s) { if (s.size() == 0 || s.size() == 1) return true; vector<string> vecStrs = stringSplit(s," ~!@#$%^&*().,:;-?\"'`"); s = ""; for (int i = 0; i < vecStrs.size(); i++) s += vecStrs[i]; if (s.size() == 1 || s.size() == 0) return true; int i = 0; for (; i < s.size() / 2; i++) { if (s[i] <= 57 || s[s.size() - i - 1] <= 57) { if (s[i] == s[s.size() - i - 1]) { continue; } else { return false; } } else if (s[i] == s[s.size() - i - 1] || s[i] - s[s.size() - i - 1] == 32 || s[s.size() - i - 1] - s[i] == 32) { continue; } else { return false; } } return true; } };
上面的做法效率低下,還有對API不熟悉。
下面是對上面的改進:
參考https://discuss.leetcode.com/topic/48376/12ms-c-clean-solution
代碼如下:
class Solution { public: bool isPalindrome(string s) { int i = 0, j = s.size() - 1; while (i < j) { while (!isalnum(s[i]) && i < j) i++; while (!isalnum(s[j]) && i < j) j--; if (tolower(s[i++]) != tolower(s[j--])) return false; } return true; } };
這里使用了isalnum()函數(shù)來判斷是否為文字數(shù)字。
通過使用tolower()來統(tǒng)一字符的大小寫,都變?yōu)樾憽?/p>
2016-08-11 13:26:25
網(wǎng)站名稱:leetCode125.ValidPalindrome字符串
標題網(wǎng)址:http://jinyejixie.com/article36/jdogpg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供關鍵詞優(yōu)化、ChatGPT、微信公眾號、做網(wǎng)站、網(wǎng)站維護、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)