keep learning, keep coding!
Problem - Valid Palindrome
A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.
Given a string s, return true if it is a palindrome, or false otherwise.
翻譯蒟蒻
給定一個字串,將所有大寫字母轉換為小寫字母並刪除所有非字母數字符號後,字串正向讀和反向讀是一樣的,就返回 true,否則 false。 (補充:palindrome n. 回文(正向讀和反向讀是一樣的))
Example 1:
1
2
3Input: s = "A man, a plan, a canal: Panama"
Output: true
Explanation: "amanaplanacanalpanama" is a palindrome.Example 2:
1
2
3Input: s = "race a car"
Output: false
Explanation: "raceacar" is not a palindrome.Example 3:
1
2
3
4Input: s = " "
Output: true
Explanation: s is an empty string "" after removing non-alphanumeric characters.
Since an empty string reads the same forward and backward, it is a palindrome.
Solution - JavaScript
Solution 1:
1 | /** |
Solution 2:
1 | /** |
Solution - Ruby
1 | def is_palindrome(s) |
Solution - PHP
1 | function isPalindrome($s) { |
PHP 方法筆記
strtolower
進行小寫轉換。preg_replace
進行正則表達式替換。函數的基本語法如下:
1
2
3strtolower(string $string): string
// 接受一個字串作為參數。1
2
3
4
5preg_replace(pattern, replacement, subject);
// `pattern`:是一個正則表達式,用來匹配字串中的模式。
// `replacement`:是用來替換匹配的內容。
// `subject`:是原始字串,也就是要進行替換的字串。在剛剛的解法裡:
1
$filteredString = strtolower(preg_replace('/[^a-zA-Z\d]/', '', $s));
這裡的正則表達式
/[^a-zA-Z\d]/
匹配任何不是字母(包括大小寫)和數字的字。然後,這些匹配的字符被替換為空字符串''
,即被移除。最終,$filteredString
包含的是原始字串$s
中的所有字母和數字,並透過strtolower
轉換為小寫。
strrev
進行將字串反轉(順序顛倒)。函數的基本語法如下:
1
2strrev(string $string): string
// 接受一個字串作為參數,並返回一個新的字串,其中的字符順序是原始字串的相反。在剛剛的解法裡:
1
$reversedString = strrev($filteredString);
strrev
被用來將經過正則表達式處理後的字串$filteredString
進行反轉。
這樣就可以判斷原始字串是否跟反轉字串相同,一種判斷使否為回文的方法。