zoukankan      html  css  js  c++  java
  • valid Palindrome -- leetcode

    125 Valid Palindrome
    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
    (大意:给定字符串,只考虑其中的数字和字母字符,判断该字符串是否为回文串)
    For example:
    “A man, a plan, a canal: Panama” is a palindrome.
    “race a car” is not a palindrome.

    思路:
    1. 定义两个指针,分布指向字符串的首尾
    2. 从头开始,过滤头部的非字母数字字符
    3. 然后从尾部开始,过尾部的非字母数字字符
    4. 头指针小于尾指针的情况下,
    1) 如果两个字母数字字符相同,
    2)头指针后移,并过滤非字母数字字符
    5. 如果两个字母不同,返回false

    代码:

    class Solution {
    public:
        bool isPalindrome(string s) {
           if (s.size() == 0 || s.size() == 1) return true;
           int low = 0, high = s.size() - 1;
             //从头开始,过滤头部的非字母数字字符
           while (low < s.size() && !isRightChar(s[low])) ++low;
             //从尾开始,过滤尾部的非字母数字字符
           while (high >= 0 && !isRightChar(s[high])) --high;
           while(low < high){
               if (lowerCase(s[low]) == lowerCase(s[high])){
                    //头指针后移,并过滤非数字字母字符
                   ++low;
                   while (low < s.size() && !isRightChar(s[low])) ++low;
                    //尾指针前移,并过滤非数字字母字符
                   --high;
                   while (high >= 0 && !isRightChar(s[high])) --high;
               }else return false;
           }
           return true;
        }
        //判读是否为数字字母字符
        bool isRightChar(char c){
            if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) return true;
            else return false;
        }
        //大写转小写
        char lowerCase(char c){
            if (c >= 'A' && c <= 'Z') return tolower(c);
            return c;
        }
    };
  • 相关阅读:
    SQL字符串处理函数大全
    如何在word2007中并排查看对比显示两个文档
    android系统体系结构
    实现html转Xml
    一款很不错的html转xml工具-Html Agility Pack
    HtmlAgilityPack 之 HtmlNode类
    微信公众平台开发入门教程
    Apache Kafka:下一代分布式消息系统
    JAVA线程池的分析和使用
    ZooKeeper系列之八:ZooKeeper的简单操作
  • 原文地址:https://www.cnblogs.com/xiaocai-ios/p/7779765.html
Copyright © 2011-2022 走看看