玩转回文:探索双下标法解谜,揭秘验证回文串的智慧攻略

玩转回文:探索双下标法解谜,揭秘验证回文串的智慧攻略_第1张图片

本篇博客会讲解力扣“125. 验证回文串”的解题思路,这是题目链接。

玩转回文:探索双下标法解谜,揭秘验证回文串的智慧攻略_第2张图片
验证回文串,我们最容易想到的思路就是,使用两个下标left和right,分别表示字符串的第一个字符和最后一个字符。接着,让两个下标不断向中间移动,遇到非数字且非字母字符就跳过,遇到数字或字母字符就停下来,判断一下对应的两个字符是否相同,若相同,就让两个下标继续向中间移动;若不相同,则说明该字符串不是回文串。

判断是否是数组或字母字符可以调用isalnum函数,大写字母转小写字母可以调用tolower函数。

bool isPalindrome(char * s){
    int left = 0;
    int right = strlen(s) - 1;
    while (left < right)
    {
        // 跳过所有非数字或字母字符
        while (left < right && !isalnum(s[left]))
        {
            ++left;
        }
        while (left < right && !isalnum(s[right]))
        {
            --right;
        }
        // 若left和right没有交错就停了下来,判断左右字符是否相同
        if (left < right)
        {
            if (tolower(s[left]) != tolower(s[right]))
            {
                return false;
            }
            else
            {
                // 继续比较其余字符
                ++left;
                --right;
            }
        }
    }

    // left和right已经交错了
    return true;
}

玩转回文:探索双下标法解谜,揭秘验证回文串的智慧攻略_第3张图片

总结

遇到跟回文串有关的题目时,一般可以使用双下标的方法。

感谢大家的阅读!

你可能感兴趣的:(力扣刷题,leetcode,算法,职场和发展,力扣,c语言)