程式設計之法面試和演算法心得-1.5迴文判斷
阿新 • • 發佈:2018-12-19
1、題目描述
給定一個字串,如何判斷這個字串是否是迴文串?
2、解法一:兩頭往中間掃
給定一個字串,判斷對應的首尾字元是否相等。每一次迴圈首尾各往中間移動一位,直到迴圈結束。
參考程式碼如下:
def IsPalindrome(s, n): s= list(s) if (n == 0): return False for i in range(n): if(i < n-i-1): if(s[i] != s[n-i-1]): return False return True
3、解法二:從中間往兩頭掃
思路和解法一類似,但是需要考慮的一點是字串的個數是奇還是偶。每一次迴圈定義的中間變數各往兩邊移動一位,直到迴圈結束。
參考程式碼如下:
def IsPalindrome(s, n): s= list(s) if (n == 0): return False if( n%2 ==0 ): start = (n>>1) - 1 end = n - 1 - ((n>>1) - 1) else: start = (n >> 1) end = n - 1 - (n >> 1) while(start >= 0): if(s[start] != s[end]): return False start = start - 1 end = end + 1 return True