您的位置:首页 > 其它

LeetCode OJ:Valid Palindrome(验证回文)

2015-10-08 19:52 309 查看
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.

验证回文与否,这个估计大家学c语言的时候就都写过,感觉我下面写的还是乱了一点:

class Solution {
public:
bool isPalindrome(string s) {
if (s.size() == 0)
return true;
int end = s.size() - 1;
int beg = 0;
while (beg < end){
while (!isalpha(s[beg]) && !isdigit(s[beg])){
if(beg < end)
beg++;
else
return true;
}
while (!isalpha(s[end]) && !isdigit(s[end])){
if(end > beg)
end--;
else
return true;
}
if (toupper(s[beg]) == toupper(s[end])){
beg++, end--;
}
else{
return false;
}
}
return true;
}
};


java版本的代码如下所示,算法没有变化:

public class Solution {
public boolean isPalindrome(String s) {
int sz = s.length();
int beg = 0, end = sz - 1;
while(beg < end){
while(!Character.isLetter(s.charAt(beg)) && !Character.isDigit(s.charAt(beg))){
if(beg < end) beg++;
else return true;
}
while(!Character.isLetter(s.charAt(end)) && !Character.isDigit(s.charAt(end))){
if(beg < end) end--;
else return true;
}
if(Character.toUpperCase(s.charAt(beg)) == Character.toUpperCase(s.charAt(end))){
beg++;
end--;
}else{
return false;
}
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: