美文网首页
125. 验证回文串

125. 验证回文串

作者: 六十年目裁判长亚玛萨那度 | 来源:发表于2019-01-09 10:46 被阅读0次

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

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

    难度:简单

    思路:
    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); 可以利用正则表达式输入空格。

    相关文章

      网友评论

          本文标题:125. 验证回文串

          本文链接:https://www.haomeiwen.com/subject/blewrqtx.html