1. 程式人生 > >Leetcode 125:驗證迴文串(最詳細解決方案!!!)

Leetcode 125:驗證迴文串(最詳細解決方案!!!)

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。

說明:本題中,我們將空字串定義為有效的迴文串。

示例 1:

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

示例 2:

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

解題思路

首先想到的一個解決辦法是,將字串中的字母按順序拿出來,並且將大寫的字母轉化為小寫字母新增到一個新的字串中,然後判斷迴文字元即可。

class Solution:
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
s_filter = ''.join(filter(str.isalnum, s)).lower() return s_filter[::-1] == s_filter

上面這種寫法非常的pythonic,讓人看著很舒服,很簡潔。

然後我們還可以想到的一種簡潔做法是通過對撞指標。你可以閱讀這篇來了解對撞指標的思想Leetcode 167:兩數之和 II - 輸入有序陣列

class Solution:
    def isPalindrome(self, s):
        """
        :type s: str
        :rtype: bool
        """
l = 0 r = len(s) - 1 while l < r: if not s[l].isalnum(): l += 1 continue if not s[r].isalnum(): r -= 1 continue if s[l].lower() != s[r].lower(): return False
else: l += 1 r -= 1 return True

但是這個解法在python看來很蠢( ̄▽ ̄)”~~

如有問題,希望大家指出!!!

相關推薦

Leetcode 125:驗證詳細解決方案

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2:

LeetCode 125. 驗證C、C++、python

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race

LeetCode-125.驗證相關話題:字串

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race a car" 輸

LeetCode125. 驗證Valid Palindrome

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

[Leetcode] 125. 驗證 java

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "rac

LeetCode-125. 驗證

題目 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 **說明:**本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入

leetcode 125:驗證

bool isPalindrome(std::string s){ std::vector<char> a; for(int i=0;i<s.size();i++){ if((s[i]>='a'&&s[i]<='z')

Leetcode:125.驗證

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race

Leetcode 125.驗證

驗證迴文串 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race a ca

Leetcode 125. 驗證(Python3)

125. 驗證迴文串 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入:

Leetcode 328:奇偶連結串列詳細解決方案

給定一個單鏈表,把所有的奇數節點和偶數節點分別排在一起。請注意,這裡的奇數節點和偶數節點指的是節點編號的奇偶性,而不是節點的值的奇偶性。 請嘗試使用原地演算法完成。你的演算法的空間複雜度應為 O(1),時間複雜度應為 O(nodes),nodes 為節點總數。

Leetcode 92:反轉連結串列 II詳細解決方案

反轉從位置 m 到 n 的連結串列。請使用一趟掃描完成反轉。 說明: 1 ≤ m ≤ n ≤ 連結串列長度。 示例: 輸入: 1->2->3->4->5->NU

LeetCode125. 驗證

題目連結:https://leetcode-cn.com/problems/valid-palindrome/description/ 題目描述 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。

LeetCode125 驗證

解題思路: 1 哦 看吶,這是我們的老朋友雙指標,3Sum這道題也是用這個來做的。設定兩個指標從前後分別向中間遍歷,驗證遇到的對應位置的字元是不是相等。 2 需要注意:統一大小寫的時候別用Character的API toUpperCase,耗時較多,直接x-=32即可;同時注意不

LeetCode】#125驗證(Valid Palindrome)

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

Leetcode 125.驗證 By Python

elf 字符串 有效 包括 就是 class asc 問題 提升 思路 顯然一個字符串不止包括字母和數字字符,所以我們可以先提取出來我們要進行比較的字符 還有一個問題是,字母是分大小寫的,我們要統一大寫或者統一小寫,就是規範化 代碼 class Solution(objec

LeetCode驗證

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race a car"

LeetCode題目--驗證字串python實現

題目 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2:

125. 驗證(java)

給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: 輸入: "race a car"

125 驗證

 給定一個字串,驗證它是否是迴文串,只考慮字母和數字字元,可以忽略字母的大小寫。 說明:本題中,我們將空字串定義為有效的迴文串。 示例 1: 輸入: "A man, a plan, a canal: Panama" 輸出: true 示例 2: