题目描述:
把一个句子中的单词进行反转,例如"how are you",进行反转过后变为"you are how"
分析与解答:
主要思路为:对字符串进行两次反转操作,第一次对整个字符串中的字符进行反转,反转结果为"uoy era woh",通过这一次的反转已经实现了单词顺序的反转,只不过每个单词中字符的顺序反了,接下来只需要对每个单词进行字符反转即可得到想要的结果:"you are how"。
实现的代码如下:
#encoding:utf-8
# 把一个句子中的单词进行反转,例如:“how are you”,进行反转过后变成"you are how"
"""
方法功能:实现字符串反转
输入参数:ch:字符数组 front与end:带交换的子字符串的首尾下标
"""
def reverseStr(ch,front,end):
while front<end:
ch[front] = chr(ord(ch[front]) ^ ord(ch[end]))
ch[end] = chr(ord(ch[front]) ^ ord(ch[end]))
ch[front] = chr(ord(ch[front]) ^ ord(ch[end]))
front = front+1
end = end-1
def swapWords(str):
# 对整个字符串进行字符反转操作
lens = len(str)
ch = list(str)
reverseStr(ch,0,lens-1)
begin = 0
i = 1
while i<lens:
if ch[i] == ' ':
reverseStr(ch,begin,i-1)
begin = i+1
i = i+1
reverseStr(ch,begin,lens-1)
return ''.join(ch)
if __name__=="__main__":
str = "how are you"
print("字符串"+str+"翻转过后为:")
print(swapWords(str))