iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0

大家好,我是毛毛。ヾ(´∀ ˋ)ノ
廢話不多說開始今天的解題Day~


125. Valid Palindrome

Question

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


Example

Example1

Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.

Example2

Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.

Constraints

  • 1 <= s.length <= 2 * 10^5
  • s consists only of printable ASCII characters.

解題

題目

首先先簡單的翻譯一下題目
給一個字串,要把除了英文字母以外的符號和空白都刪掉,然後看這個字串是不是對稱的(忽略大小寫)。

Think

作法大致上是這樣

  • 一開始寫法是s = s.replace(",", "").replace(" ", "").replace(":", "")。
  • 然後送出後才知道為什麼這題這麼多倒讚,因為測資有一堆亂七八糟的符號,應該含有所有的符號啦XD,於是就換個寫法,用for loop去跑,不然不知道要打多少個replace。ಥ_ಥ
  • 這題挺無聊的XD,C的再考慮這題要不要補。

Code

Python

class Solution:
    def isPalindrome(self, s: str) -> bool:
        s = s.strip()
        for character in ['\\', '`', '*', '_', '{',\
                          '}', '[', ']', '(', ')', \
                          '>', '#', '+', '-', '.', 
                          '!', '$', '\'', ' ', ',',\
                          ':', '%', '^', '<', '&',\
                          '=', '?', '{', '}', '|',\
                          '/', '~', '@', '\"', ';']:
            if character in s:
                s = s.replace(character,"")
        s = s.lower()
        # print(s)
        
        low = 0
        high = len(s)-1
        
        while(low<=high):
            if s[low] != s[high]:
                return False
            low += 1
            high -= 1
        
        return True

C


Result

  • Python

  • C

大家明天見/images/emoticon/emoticon29.gif


上一篇
Day 13 - Add Binary
下一篇
Day 15 - Excel Sheet Column Number
系列文
30天 Leetcode解題之路30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
soft_soft
iT邦新手 5 級 ‧ 2021-10-08 20:37:54

數數字囉2

我要留言

立即登入留言