125. 验证回文串

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

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

难度:简单

思路:
1.利用两个指针指向原串首尾,匹配查找
2.用数组存有用的信息,进行操作。这样最快,但是要耗费空间

用数组:

int len_str(char *str) {
    int len = 0;
    while (str[len] != 0) len += 1;
    return len;
}

void read_case(char *str, char *arr) {
    int len = len_str(str), len_zero = 0;
    int i = 0;
    while (len > len_zero) {
        if (str[len_zero] >= 'a' && str[len_zero] <= 'z' || str[len_zero] >= 'A' && str[len_zero] <= 'Z' || str[len_zero] >= '0' && str[len_zero] <= '9') {
            if (str[len_zero] >= 'A' && str[len_zero] <= 'Z') {
                arr[i++] = str[len_zero] + 32;
            } else 
                arr[i++] = str[len_zero];
        }
        len_zero += 1;
    }
    arr[i] = 0;
    return ;
}

int nsakpter(char *str) {
    int left = 0, right = len_str(str) - 1;
    while (left <= right) {
        if (str[left] != str[right]) return false;
        else {
            left += 1;
            right -= 1;
        }
    }
    return true;
}

char arr[100000];

bool isPalindrome(char* s) {
    read_case(s, arr);
    return nsakpter(arr);
}

注意别忘了空的字符串也是有效的,处理的字符中数字也算。

scanf("%[^\n]s",a); 可以利用正则表达式输入空格。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为...
    追云的帆阅读 435评论 0 0
  • 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符串定义...
    二木二三水阅读 999评论 0 1
  • 一、题目原型: 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们...
    花果山松鼠阅读 782评论 0 1
  • 内容 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 说明:本题中,我们将空字符...
    吃饭用盘装阅读 342评论 0 0
  • 给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。说明:本题中,我们将空字符串定义为...
    vbuer阅读 138评论 0 0

友情链接更多精彩内容