原題網址:https://www.lintcode.com/problem/valid-palindrome/description面試
給定一個字符串,判斷其是否爲一個迴文串。只考慮字母和數字,忽略大小寫。markdown
你是否考慮過,字符串有多是空字符串?這是面試過程當中,面試官經常會問的問題。app
在這個題目中,咱們將空字符串斷定爲有效迴文。函數
"A man, a plan, a canal: Panama"
是一個迴文。spa
"race a car"
不是一個迴文。.net
O(n) 時間複雜度,且不佔用額外空間。指針
class Solution { public: /** * @param s: A string * @return: Whether the string is a valid palindrome */ bool isPalindrome(string &s) { // write your code here int n=s.size(); if (n==0) { return true; } int i=0,j=n-1; while(i<=j) { if (tmp(s[i])&&tmp(s[j])) { if (!isSame(s[i],s[j])) { return false; } } if (!tmp(s[i])) { i++; continue; } if (!tmp(s[j])) { j--; continue; } i++; j--; } return true; } bool tmp(char c) { if ((c>='a'&&c<='z')||(c>='A'&&c<='Z')||(c>='0'&&c<='9')) { return true; } return false; } bool isSame(char c1,char c2) { if (c1==c2) { return true; }
if (abs(c1-c2)==abs('a'-'A')) { return true; } return false; } };