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