zoukankan      html  css  js  c++  java
  • OJ练习30——T125 Valid Palindrome

    判断字符串是否是回文。

    字母、数字都算在内;空串也是回文。

    【思路】

    经典回文,两个指针,一个从前向后遍历,一个从后向前,遇到不是要求字符的就跳过。

    前后指针位置交叉(i>j),则遍历结束。

    特殊的地方在于,包含字母和数字,如果一一排除,代码很繁琐。

    【my code】

    bool isPalindrome(string s) {
            if(s=="")
                return true;
            int length=s.size();
            int i=0,j=length-1;
            while(i<=j){
                //while(!((s[i]>='a'&&s[i]<='z')||(s[i]>='A'&&s[i]<='Z'))&&i<j)
                while((s[i]==' '||ispunct(s[i]))&&i<j)
                    i++;
                //while(!((s[j]>='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z'))&&i<j)
                while((s[j]==' '||ispunct(s[j]))&&i<j)
                    j--;
                if(i<=j&&((s[i]==s[j])||abs(s[i]-s[j])==32)){
                    i++;
                    j--;
                }
                else return false;
            }
            return true;
        }

    【评价】

    这里用了一个ctype的函数,ispunct(char),当字符是非空格或数字或字母时,返回0,但题目不包括空格,所以要加上。

    另外,i和j的比较要在每一个循环中,否则不满足条件也会继续执行。

    用时16ms。

  • 相关阅读:
    webpy安装
    windows 上jenkins slave 执行脚本提示成功,但是没有运行
    jenkins slave上执行脚本报错
    python selenium2 动态调试
    maven配置阿里云国内仓库
    jenkins部署报404错误
    elipse常用插件下载
    jenkins部署
    国内开源镜像站
    最大公约数
  • 原文地址:https://www.cnblogs.com/ketchups-notes/p/4458997.html
Copyright © 2011-2022 走看看