1. 程式人生 > >LeetCode | Valid Palindrome(有效的迴文串)

LeetCode | 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.

Note:
Have you consider that the string might be empty? This is a good question to ask during an interview.

For the purpose of this problem, we define empty string as valid palindrome.


題目解析:

只識別字母和數字,其他的字元全部忽略,也忽略大小寫,判斷是否是迴文串。題目簡單不難,但是有不少的小問題。1、大寫+32 = 小寫。2、不合格的範圍,最好是用取反,關係簡潔。

class Solution {
public:
    bool isPalindrome(string s) {
        int n = s.size();
        if(n == 0)
            return true;
        int i = 0;
        int j = n-1;
        while(i < j){
            while(i < j && !(s[i] >= 'a' && s[i] <= 'z' || s[i] >= 'A' && s[i] <= 'Z' || s[i]>='0' && s[i]<= '9'))
                i++;
            while(i < j && !(s[j] >= 'a' && s[j] <= 'z' || s[j] >= 'A' && s[j] <= 'Z' || s[j]>='0' && s[j]<= '9'))
                j--;
            if(i >= j)
                return true;
            if(s[i] >= 'A' && s[i] <= 'Z')
                s[i] += 32;
            if(s[j] >= 'A' && s[j] <= 'Z')
                s[j] += 32;
            if(s[i] != s[j])
                return false;
            i++;
            j--;
        }
        return true;
    }
};


相關推薦

[leetcode]Valid Palindrome 判斷數 C語言實現

Valid Palindrome Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. F

LeetCode | Valid Palindrome有效

Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases. For example,"A man, a pl

每日一題--LeetCode 125 驗證java

題目描述: 解題思路:先將特殊情況考慮,比如字串為空或者字串只有一個字元,然後可以將字串中的字母都轉化為大寫或小寫。自己編寫一個方法判斷該字元是否為數字字元或者為字母,再使用左右指標向中間掃描,當左右字元都為字母或數字時判斷二者是否相等,若相等繼續迴圈判斷,若不相等直接返回false。

[LeetCode] Valid Palindrome II 驗證字串之二

Given a non-empty string s, you may delete at most one character. Judge whether you can make it a palindrome. Example 1: Input: "aba" Output: True

[LeetCode] Shortest Palindrome 最短

Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. Find and return the shortest palindrome you can find

[leetcode]680. Valid Palindrome II有效II(可至多刪一原字符)

span cti pan col rac helper code delet example Given a non-empty string s, you may delete at most one character. Judge whether you can ma

LeetCode:5. Longest Palindromic Substring找出一個字串中最大的子

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of sis 1000. Example 1: Input

[LeetCode] Palindrome Partitioning 拆分

Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. For example

LeetCode oj 409. Longest Palindrome (

Given a string which consists of lowercase or uppercase letters, find the length of the longest palindromes that can be built with those letters. This is

Longest Palindromic Substring 最長【面試演算法leetcode

題目: Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exis

LeetCode】 409. 最長

1.題目 給定一個包含大寫字母和小寫字母的字串,找到通過這些字母構造成的最長的迴文串。 在構造過程中,請注意區分大小寫。比如 “Aa” 不能當做一個迴文字串。 注意: 假設字串的長度不會超過 1010。 2.思路 建立map存放26個大小寫字母的數量; 如果該字

LightOJ - 1205:Palindromic Numbers 數位DP&

A palindromic number or numeral palindrome is a 'symmetrical' number like 16461 that remains the same when its digits are reversed. In this problem you

LeetCode】214. 最短 結題報告 (C++)

原題地址:https://leetcode-cn.com/problems/shortest-palindrome/ 題目描述: 給定一個字串 s,你可以通過在字串前面新增字元將其轉換為迴文串。找到並返回可以用這種方式轉換的最短迴文串。 示例 1: 輸入: "aacecaaa" 輸出

manacher演算法最長

這是建立部落格記錄的第一個程式碼。 題目解釋:     子串:小於等於原字串長度由原字串中任意個連續字元組成的子序列     迴文:關於中間字元對稱的文法,即“aba”(單核)、“cabbac”(雙核)等     最長迴文子串:1.尋找回文子串;2.該子串是迴文子串中

L2-008. 最長對稱子最長

題目意思 求最長迴文串。 解題思路 直接用Manacher演算法,秒過,下面就一標準模板 程式碼部分 #include<iostream> #include<st

BZOJ3160: 萬徑人蹤滅FFT,自動機

BZOJ傳送門: 解題思路: FFT在處理卷積時可以將自己與自己卷,在某一種字母上標1其他標0,做字符集次就好了。 (迴文就是直接對稱可以聯絡偶函式定義理解,根據這個性質就可以將字串反向實現字串匹配)。 最後利用容斥迴文字元2的次冪-迴文串就好了。 迴文串計數當然要回文自動機了。 程式碼:

LeetCode】125. 驗證Valid Palindrome

【 英文練習 | 中文練習 】 題目描述: 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,忽略字母的大小寫。 解題思路: 用雙指標的思想,從字串的頭部與尾部向中間移動比較。 public boolean isPalindrome(String s) { if

LeetCode】#125驗證(Valid Palindrome)

【LeetCode】#125驗證迴文串(Valid Palindrome) 題目描述 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 示例 1: 輸入: “A man, a plan,

LeetCode 9. Palindrome Number

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Example 1: Input: 121 O

LeetCode刷題筆記-009:palindrome number

題目描述: Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward. Exa