1. 程式人生 > >判斷字串是否為迴文 python實現

判斷字串是否為迴文 python實現

題目:判斷一個字串是否是迴文

方法:設定兩個指標,分別有頭尾向中間移動 或者由中間向兩邊移動

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def isPalindrome(s):
	'''判斷一個字串是否為迴文'''
	lens = len(s)
	if lens <=1:
		return True
	l,r = 0, lens-1
	while l<r:
		if s[l] != s[r]:
			return False
		l += 1
		r -= 1
	return True

def longestPalindrome(s):
	'''查詢一個字串中的最長迴文字串'''
	maxl, lens = 1, len(s)
	for i in xrange(lens):
		j = 1
		while i-j>=0 and i+j<lens:
			if s[i-j] != s[i+j]:
				break
			j += 1
		if 2*(j-1)+1 > maxl:
			maxl = 2*(j-1) + 1
		j = 0
		while i-j>=0 and i+j+1<lens:
			if s[i-j] != s[i+j+1]:
				break
			j += 1
		if 2*(j-1)+2 > maxl:
			maxl = 2*(j-1) + 2
	return maxl
		

if __name__ == '__main__':
	s = 'qabcdefgfedcbaa'
	print isPalindrome(s)
	print longestPalindrome(s)