zoukankan      html  css  js  c++  java
  • LeetCode 初级算法 数组

    1.验证回文字符串

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

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

    示例 1:

    输入: "A man, a plan, a canal: Panama"
    输出: true
    

    示例 2:

    输入: "race a car"
    输出: false


    因为是字符串,在ASCII 编码中,可显示的字符是在32位(0-31属于不可显)后,而题目中只考虑字母和数字,又把符号等排除了

    在C++库中,有以下函数判断字符是否是数字和字母

     int isalpha(int c);
    【参数】c 为需要被检测的字符。

    【返回值】若参数c 为英文字母(a ~ z  A ~ Z),则返回非 0 值,否则返回 0。
    int isdigit( int arg );
    【参数】arg 为需要被检测的字符。

    【返回值】若参数c 为数字,则返回非 0 值,否则返回 0。

    经过两这个函数的判断之后,就剩下了数字,大写字母,小写字母,有趣的是在ACSII中 a和A的差值也是32(或许是有意的)

    所以,可以让字符先加上32,然后减去字符a,最后对32取余,只需要判断余数是否相等,即可判断两个字符是否一致(忽略大小写字母的一致)

    bool isPalindrome(string s) {
        int left = 0, right = s.size() - 1;
    
        while (left < right)
        {
            if (0 == isalpha(s[left]) && 0 == isdigit(s[left]))        {
                left++;
                continue;
            }
            if (0 == isalpha(s[right]) && 0 == isdigit(s[right])) {
                right--;
                continue;
            }
            if ((s[left] + 32 - 'a')%32 != (s[right]+32-'a')%32)        {
                return false;
            }
            else        {
                left++;
                right--;
            }
        }
        return true;
        }




  • 相关阅读:
    杂七杂八的文档资料。
    图片(img标签)的onerror事件
    html的a标签的 href 和 onclick。
    【mysql】一次有意思的数据库查询分析。
    书籍:Building Secure PHP Apps
    js关闭当前页面/关闭当前窗口
    【汉字乱码】IE下GET形式传递汉字。
    弹出层展示插件。
    原型图设计工具。
    LeetCode(24): 两两交换链表中的节点
  • 原文地址:https://www.cnblogs.com/gongkiro/p/13170052.html
Copyright © 2011-2022 走看看