验证回文串 双指针 leetcode 刷题篇

news/2024/7/4 9:18:55

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

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

整体思路还是清晰的,就是两头指针不断比较,并跳过无效的字符;

就是跳过时的判断需要思考下,漏写了可不好; 

bool isPalindrome(char* s) {
    if(s==NULL){
        return true;
    }
    int r = strlen(s) - 1;
    int l = 0;
    while (l <= r) {
        while ((l<=r)&&!((s[l] >= 48 && s[l] <= 57) || (s[l] >= 65 && s[l] <= 90) || (s[l] >= 97 && s[l] <= 122))) {
            l++;
        }
        while ((l<=r)&&!((s[r] >= 48 && s[r] <= 57) || (s[r] >= 65 && s[r] <= 90) || (s[r] >= 97 && s[r] <= 122))) {
            r--;
        }
        if (l >= r) {
            return true;
        }
        if (s[l] <= 90) {
            s[l] += 32;
        }
        if (s[r] <= 90) {
            s[r] += 32;
        }
        if (s[l] != s[r] && l <= r) {
            return false;
        }
        l++;
        r--;
    }
    return true;
}

完整代码已放入github中,在2022_3_18文件夹中,需要测试可修改调用参数:

GitHub - frankRenlf/c_dailyWorkhttps://github.com/frankRenlf/c_dailyWork.git

这个结果显示还是比较不稳定的....

 


http://www.niftyadmin.cn/n/3651746.html

相关文章

Python Cookbook 第二版 汉化版 [01-Introduction]

Chapter 1. Text第1 章 文本处理本章目录&#xff1a;Introduction介绍导言Recipe 1.1. Processing a String One Character at a TimeRecipe 1.1. 逐个处理字符串中的各个字符Recipe 1.2. Converting Between Characters and Numeric CodesRecipe 1.2. 字符与其对应的数字…

Python Cookbook 第二版 汉化版 [Recipe 1.2] 字符与其对应的数字编码之间的转换

Recipe 1.2. Converting Between Characters and Numeric CodesRecipe 1.2. 字符与其对应的数字编码之间的转换Credit: Luther Blissett问题您需要在字符与其对应的 ASCII&#xff08;ISO&#xff09;编码或 Unicode 编码之间相互转换。解法内建函数 ord 和 chr 就是专门用来做…

只出现一次的数字 leetcode 刷题篇

给定一个非空整数数组&#xff0c;除了某个元素只出现一次以外&#xff0c;其余每个元素均出现两次。找出那个只出现了一次的元素。 说明&#xff1a; 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗&#xff1f; int singleNumber(int* nums, int numsSize…

Designing Interfaces 概观 [好书一本]

http://www.oreilly.com/catalog/designinterfaces/Designing InterfacesBy Jenifer TidwellPublisher: OReillyPub Date: November 2005Print ISBN-10: 0-596-00803-1Print ISBN-13: 978-0-59-600803-1Pages: 352概观设计好界面不容易。用户要求软件具有良好的行为&#xff0c…

leetcode 刷题篇 java 二进制位1的个数

编写一个函数&#xff0c;输入是一个无符号整数&#xff08;以二进制串的形式&#xff09;&#xff0c;返回其二进制表达式中数字位数为 1 的个数&#xff08;也被称为汉明重量&#xff09;。 提示&#xff1a; 请注意&#xff0c;在某些语言&#xff08;如 Java&#xff09;中…

Python Cookbook 第二版 汉化版 [Recipe 16.4] 将参数与函数关联起来(Currying)

Recipe 16.4. Associating Parameters with a Function (Currying)Recipe 16.4. 将参数与函数关联起来&#xff08;Currying&#xff09;&#xff08;译注&#xff1a;本条目中出现“parameter”和“argument”两种字眼。其中的“parameter”似乎并不强调“形参”意味&#xff…

无重复字符的最长子串 leetcode java篇

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度 class Solution {public int lengthOfLongestSubstring(String s) {int[] map new int[127];// map {0};char[] arr s.toCharArray();int len arr.length;int l 0;int r 0;int max 0;while(…

Python Cookbook 第二版 汉化版 [Recipe 1.1] 逐个处理字符串中的各个字符

Recipe 1.1. Processing a String One Character at a TimeRecipe 1.1. 逐个处理字符串中的各个字符Credit: Luther Blissett[问题]您想逐个处理字符串中的各个字符。[解法]您可以构建一个列表&#xff0c;其中每个元素存放一个字符串中的字符&#xff08;由于 Python 中没有用…