125. 验证回文串

125. 验证回文串

难度简单

给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。

说明:本题中,我们将空字符串定义为有效的回文串。

 

示例 1:

输入: "A man, a plan, a canal: Panama"
输出: true
解释:"amanaplanacanalpanama" 是回文串

示例 2:

输入: "race a car"
输出: false
解释:"raceacar" 不是回文串

 

提示:

  • 1 <= s.length <= 2 * 105
  • 字符串 s 由 ASCII 字符组成

 

解法:

先根据题意,只要字母和数字。把大写转小写,字母,数字存入新的字符数组中。

再使用双指针挨个比较。

bool isPalindrome(char * s){
    char str[200000];
    int i=0;
    int len =strlen(s);
    int j = 0;
    int l = 0;
    int r = 0;

    for(i=0; i<len; i++){
        if(s[i] >= 65 && s[i]<=90){  //大写字母范围65~90
            str[j++] = s[i] + 32;
        }else if(s[i] >= 48 && s[i] <= 57){  
            str[j++] = s[i];
        }else if(s[i] >= 97 && s[i] <= 122){  //小写字母范围97~122
            str[j++] = s[i];
        }else{
            continue;
        }
    }

    l = 0;
    r = j-1;
    while(l<r){
        if(str[l] == str[r]){
            l++;
            r--;
        }else{
            return false;
        }
    }
        return true;
}
posted @ 2022-04-11 16:31  bug快递员  阅读(14)  评论(0编辑  收藏  举报