初级算法:反转字符串
题目
描述
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]
的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
样例
example 1:
输入:[“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
example 2:
输入:[“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]
题解
思路
偷懒方式:chars.reverse()
函数直接实现字符串翻转;
方法1:直接对换法(显然超时);
方法2:双指针法;
程序
def reverseString(chars):
#偷懒方式
chars.reverse() #reverse()直接实现
#方法1:逐各对换法(超时)
length = len(chars)
for i in range(length-1):
for j in range(length-i-1):
tmp = chars[j]
chars[j] = chars[j+1]
chars[j+1] = tmp
print(chars)
return chars
#方法2:双指针法
#normal expression
left = 0
right = len(chars)-1
while left < right:
tmp = chars[left]
chars[left] = chars[right]
chars[right] = tmp
left = left + 1
right = right - 1
print(chars)
#advanced expression
left, right = 0, len(chars) - 1
while left<right:
chars[left],chars[right] = chars[right],chars[left]
left,right = left+1,right-1