zoukankan      html  css  js  c++  java
  • 【LeetCode-字符串】验证回文串

    题目描述

    给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。
    说明: 本题中,我们将空字符串定义为有效的回文串。
    示例:

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

    题目链接: https://leetcode-cn.com/problems/valid-palindrome/

    思路

    首先清理输入的字符串:只保留字母和数字,并且将字母全部转为小写。然后判断清理后的字符串是否为回文串:

    • 设置两个指针 left=0,right=newStr.length()-1,left 和 right 由两边向中间靠拢;
    • 当 left<=right,循环:
      • 如果 newStr[left]!=newStr[right],返回 false;
    • 返回 true;

    代码如下:

    class Solution {
    public:
        bool isPalindrome(string s) {
            if(s.empty()) return true;
    
            string newStr = "";
            for(int i=0; i<s.length(); i++){
                if(isalpha(s[i])){
                    newStr += tolower(s[i]);
                }else if(isdigit(s[i])){
                    newStr += tolower(s[i]);
                }
            }
    
            int left = 0, right = newStr.length()-1;
            while(left<=right){
                if(tolower(newStr[left])!=tolower(newStr[right])) return false;
                left++;
                right--;
            }
            return true;
        }
    };
    
    • 时间复杂度:O(n)
    • 空间复杂度:O(1)

    相关题目

    1、https://www.cnblogs.com/flix/p/12916120.html

  • 相关阅读:
    魔兽登录系统
    航班信息查询预订
    第六章
    嵌套.
    嵌套
    Mysql
    第二章
    Java
    HTML-表格-列表-结构标记-表单
    HTML语言
  • 原文地址:https://www.cnblogs.com/flix/p/12917048.html
Copyright © 2011-2022 走看看