题目描述:
给定一个字符串 s
,验证 s
是否是 回文串 ,只考虑字母和数字字符,可以忽略字母的大小写。
本题中,将空字符串定义为有效的 回文串 。
public class Solution {
public bool IsPalindrome(string s) {
int left = 0 , right = s.Length-1;
s = s.ToLower();
while(left<right){
if (!(s[left]<='z'&&s[left]>='a')){
left++;
}
else if (!(s[right]<='z'&&s[right]>='a')){
right--;
}
else {
if (s[left] != s[right]) {
return false;
}
left++;
right--;
}
}
return true;
}
}
救命,这个代码总是有几个不通过,我实在是不理解,我不知道到底是哪里不对?
现在卡在了“OP”这个字符串上,一直输出是true,但是实在是找不到问题,万能的大佬们帮我看看到底问题出在哪里呀???????满脑袋的问号
== == == == ===========================================================
好了,经过两个小时的挣扎,终于找到了问题,原来题目是只考虑字母和数字。。。和数字。。。和数字(眼睛没用要么把角膜捐了吧,服了我自己了。。。。)
最后的代码是:
public class Solution {
public bool IsPalindrome(string s) {
int left = 0 , right = s.Length-1;
s = s.ToLower();
while(left<right){
if (!((s[left]<='z'&&s[left]>='a')||(s[left]<='9'&&s[left]>='0'))){
left++;
}
else if (!((s[right]<='z'&&s[right]>='a')||(s[right]<='9'&&s[right]>='0'))){
right--;
}
else {
if (s[left] != s[right]) {
return false;
}
left++;
right--;
}
}
return true;
}
}
只是加了一个条件,它就好使了。。。。。。早知如此,应该早早看题
这里提醒所有朋友:
做题千万条,看题千万条
看题不仔细,做题一行又一行泪。。。
最后结果:
没想到时间效率这么厉害,所以我之前是为什么不好好看题,浪费生命,浪费头发