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.
題目要求: 給定一個字符串,只考慮數字和字母,忽略大小寫,判斷其是否是迴文。所謂的迴文數是指倒讀和順讀的順序是一樣。
看到這道題的第一反應就是將字符串中的所有空格和標點符號去掉,處理大小寫之後,依次比較字符串的首部和尾部。
嘗試這種做法之後,發現有些特殊的字符無法去除,造成了錯誤的結果判斷,於是調用了Character.isLetterOrDigit方法,只有當首部和尾部的字符均是數字或者字母 時才進行判斷,否則一直遍歷下去。
運行時間爲42ms, 代碼如下:
經過嘗試發現,如果註釋掉代碼中的去除空格和標點符號等操作,代碼的運行效率更高。新的代碼如下所示: