题解 | #回文昵称#
回文昵称
https://www.nowcoder.com/practice/5ac63bfdf73c473d9dee7e3294551563
知识点:
回文字符串/大小写/双指针
分析:
双指针,i指向首字符,j指向尾字符
i<j 两个指针没有相遇就一直循环,在循环内,判断当前字符是否是字母数字,不是的话就循环加减i/j直到是字母数字,然后判断两个指针指向的字符是否相等,相等则继续,不相等,则不是回文。
编程语言:
C++
完整代码:
char mytolower(char& s) {
if (s >= 'A' && s<= 'Z') {
s += 32;
}
return s;
}
bool isPalindromeNickname(string s) {
int i = 0;
int j = s.size() - 1;
while (i < j) {
while(!isdigit(s[i]) && !isalpha(s[i])) {
i++;
}
while(!isdigit(s[j]) && !isalpha(s[j])) {
j--;
}
if (mytolower(s[i]) == mytolower(s[j])) {
i++;
j--;
} else return false;
}
return true;
}
查看30道真题和解析
