考察知识点

  • 回文字符串
  • tolower()

题目解析

题意

给你一个字符串去除非字母数字字符和忽略大小写后,如果正着读和反着读都一样(空串我们认为是回文),则认为是回文字符串。

解析

  • 定义一个新字符串str
  • 遍历给定字符串过滤非字母数字字符,字母字符通过tolower()函数转化为小写字母
  • 遍历处理后的字符串str,判断是否为回文字符串

AC code(C++)

#include <cctype>
class Solution {
public:
    bool isPalindromeNickname(string s) {
        string str;
        for(int i=0;i<s.size();i++){
            if(s[i]<='9'&&s[i]>='0'){
                str+=s[i];
            }
            else if((s[i]<='z'&&s[i]>='a')||(s[i]<='Z'&&s[i]>='A')){
                str+=tolower(s[i]);
            }
        }
        for(int i=0,j=str.size()-1;i<=j;i++,j--){
            if(str[i]!=str[j]){
                return false;
            }
        }
        return true;
    }
};