l****s 发帖数: 75 | 1 We only need to consider lower case
"bob" // is a palindrome
"a man, a plan, a canal, panama!" // is a palindrome
".374" // is a palindrome
" ;" // is a palindrome
bool isAlpha(char c); //provided
bool isPalindrome(const string & s)
{
if (s.empty()) return true;
int i = 0;
int j = s.size() - 1;
while (i < j)
{
while (!isAlpha(s[i]) && i < j)
{
++i;
}
// i == s.size() - 1;
while (!isAlpha(s[j]) && j > i)
{
--j;
}
if (s[i] != s[j]) return false;
++i;
--j;
}
return true;
} |
j*****8 发帖数: 3635 | 2 第二个while完了要判断下,如果 i>=j 直接break |
l****s 发帖数: 75 | 3 还真是。不过complexity好像不变。
【在 j*****8 的大作中提到】 : 第二个while完了要判断下,如果 i>=j 直接break
|
j*****d 发帖数: 1625 | 4 不需要吧。直接跑到上面那个总while去判断了。加这一句,不是画蛇添足么?
【在 j*****8 的大作中提到】 : 第二个while完了要判断下,如果 i>=j 直接break
|
f*******w 发帖数: 1243 | 5 我个人倾向于内圈不用while,用if判断+continue |
j*****8 发帖数: 3635 | 6 有什么特别的考虑吗?
【在 f*******w 的大作中提到】 : 我个人倾向于内圈不用while,用if判断+continue
|
g***j 发帖数: 1275 | 7 同意。很容易bug
【在 f*******w 的大作中提到】 : 我个人倾向于内圈不用while,用if判断+continue
|