试着写了递归和非递归的算法
# -*- coding: utf-8 -*-
def isPlidromNonRecursive(inputStr):
assert isinstance(inputStr, basestring)
strLen = len(inputStr)
currentStart = 0
currentEnd = strLen - 1
while currentStart <= currentEnd:
if inputStr[currentStart] != inputStr[currentEnd]:
return False
else:
currentStart += 1
currentEnd -= 1
return True
def isPlidromRecursive(inputStr):
assert isinstance(inputStr, basestring)
if 0 <= len(inputStr) <= 1:
return True
if inputStr[0] != inputStr[-1]:
return False
else:
return isPlidromRecursive(inputStr[1:-1])
def test_isPlidromNonRecursive():
assert isPlidromNonRecursive("level")
assert isPlidromNonRecursive("noon")
assert isPlidromNonRecursive("abcd") == False
def test_isPlidromRecursive():
assert isPlidromRecursive("level")
assert isPlidromRecursive("noon")
assert isPlidromRecursive("abcd") == False
if __name__ == '__main__':
test_isPlidromNonRecursive()
test_isPlidromRecursive()