python 反转字符串中的单词

1、问题描述:

you are student    ------>结果为:student are you, 考虑不使用split和reverse 方法

2、 思路:

按照单词逆序,然后整个字符串逆序。

input your words:you are student
First change:uoy era tneduts
Second change:student are you

3.话不投机,直接上代码:

# 交换
def swap(str1,begin,to):
    temp = str1[begin]
    str1[begin]= str1[to]
    str1[to]=temp

#字符串反转
def turnover(lists, begin,to):
    while(begin<to):
        swap(lists,begin,to)
        begin= begin+1
        to= to-1
    return lists

test = input("input your words:")
list1 = list(test)

len1 = len(list1)

index2 = [-1]
j=0
while(j< len1):
    
    if list1[j]==' ':
        index2.append(j)

    j= j+1

index2.append(len1)  #构建空格位置的list,其实就是达到一个split的目的

index1 = index2

for i in range(len(index1)-1):
    turnover(list1,index1[i]+1,index1[i+1]-1)

print("First change:",end='')

for i in list1:
    
    print(i,end='')

#上面是完成了第一次反转,按照单词反转

print()
print("Second change:",end='')

turnover(list1,0,len1-1)

#把字符串整体反转

for i in list1:
    
    print(i,end='')

上面这种方式通用对于前后有空格的情况可以处理。 

input your words: you are a student
First change: uoy era a tneduts
Second change:student a are you 

input your words:you are a student 
First change:uoy era a tneduts 
Second change: student a are you

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值