[编程题]倒置字符串
时间限制:1秒空间限制:32768K
将一句话的单词进行倒置,标点不倒置。
比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:
每个测试输入包含1个测试用例: I like beijing.
输入用例长度不超过100输出描述:
依次输出倒置之后的字符串,以空格分割\示例1
输入
I like beijing.
输出
beijing. like I
解法一:
思路:python中的字符串是无法改变的,倒置一个字符串则需要要创建一个新的拷贝;最简单的方法,当然是步长为“-1”的切片:
ans = str[::-1]
便可完成按字符倒置
如果要是按单词来反转,需要三步完成:
ans = str.split() #字符串按缺省值空格分割/分裂,此时str为一个list,list中每个元素为一个完整的单词(和标点符号,如果有的话)!
ans.reverse() #reverse 倒置字符串
ans = ' '.join(result) #拼接list中的每个元素形成完整新串
ans = ' '.join(astring.split()[::-1])
但是[::-1]降低了可读性,不过也可以这样写:
ans = ' '.join(reversed(astring.split()))
代码如下:
#-*- coding:utf-8 -*-
ans = list(input().split())[::-1] #split()指定分隔符进行切片 默认就是空格 [::-1]切片范围缺省,步进-1
print(' '.join(tmp for tmp in ans)) #join连接字符串list
主要利用split()指定分隔符切分/分裂函数,[::-1]python list灵活的切片操作,以及join格式化字符串list拼接
其中使用函数的文档,就算你不熟悉,一看便知
Python split()方法中文文档
Python join方法中文文档
join方法详解
split()函数详解
python切片操作
python的slice notation 切片操作//此切片非彼切片:)
我们把切片分为两种格式(给定步进值与不给定步进值)
比如给一个0~9的数组
a = [0,1,2,3,4,5,6,7,8,9]
tips:切片操作统一都是左闭右开
1.给定步进值-—b = a[i:j]
表示复制a[i]到a[j-1],以生成新的list对象
b = a[1:3] 那么,b的内容是 [1,2]
当i缺省时,默认为0,即 a[:3]相当于 a[0:3]
当j缺省时,默认为len(alist), 即a[1:]相当于a[1:10]
当i,j都缺省时,a[:]就相当于完整复制一份a了
2.不给定步进值-—b = a[i:j:s]
表示复制a[i]到a[j-1],但s表示步进,缺省为1,即每向后一个值便取一个,如果s为2即隔一个取一个值
所以a[i:j:1]相当于a[i:j]
当s<0时,i缺省时,默认为-1. j缺省时,默认为-len(a)-1
所以a[::-1]相当于 a[-1:-len(a)-1:-1],也就是从最后一个元素到第一个元素复制一遍。
如果还不理解,自己拿个list去测试,就会明白了
同时此题看到网上大佬们的解法
解法二:
#! python3
#-*- coding:utf-8 -*-
import sys
if __name__=='__main__':
for line in sys.stdin:
print(' '.join(reversed(line.strip().split(' '))))
基本大同小异
其中几个点明白了就会理解
- 1.reversed(seq) 相当于我们的反向迭代器
seq – 要转换的序列,可以是 tuple, string, list 或 range。
还不懂的话看文档: python3–reversed
tips:reversed()是python3特有的!
- 2.strip()方法
Python3 strip() 方法用于移除字符串头尾指定的字符(默认为空格)。
str.strip([chars]);
参数
chars – 移除字符串头尾指定的字符。
这里strip方法python2与python3共有,但略有不同
Python2—strip函数的参数char缺省值为为空格或换行符
Python3—strip函数的参数char缺省值为为空格
Python3-strip()方法
Python2-strip()方法
3.join(),split()见上文!
解法三:
大同小异,语句操作顺序不同
#-*- coding:utf-8 -*-
str_x = input().split()
print(' '.join(str_x[::-1]))