一个简单翻转语句的题目,我写了20多行的代码,结果别人一行就搞定了
Input: "Let's take LeetCode contest" Output: "s'teL ekat edoCteeL tsetnoc"
我的
class Solution:
def reverseString(self, s0):
"""
:type s: str
:rtype: str
"""
s2=''
line=''
for i in range(len(s0)):
s2+=s0[-1-i]
return s2
def reverseWords(self, s):
s2=''
n=0
for i in range(len(s)):
while(s[i]==' '):
k=i
line=s[n:k]
n=k+1
line=Solution.reverseString(line, line)
s2=s2+line+' '
break
while(i==len(s)-1):
k=i
line=s[n:k+1]
line=Solution.reverseString(line, line)
s2=s2+line
break
# print(line)
return s2
别人的
class Solution:
def reverseWords2(self, s):
return ' '.join(x[::-1] for x in s.split())
来自初学者的赞叹!!
其中,
.join()用来连接
#对序列进行操作(分别使用' '与':'作为分隔符)
>>> seq1 = ['hello','good','boy','doiido']
>>> print ' '.join(seq1)
hello good boy doiido
>>> print ':'.join(seq1)
hello:good:boy:doiido
#对字符串进行操作
>>> seq2 = "hello good boy doiido"
>>> print ':'.join(seq2)
h:e:l:l:o: :g:o:o:d: :b:o:y: :d:o:i:i:d:o
#对元组进行操作
>>> seq3 = ('hello','good','boy','doiido')
>>> print ':'.join(seq3)
hello:good:boy:doiido
#对字典进行操作
>>> seq4 = {'hello':1,'good':2,'boy':3,'doiido':4}
>>> print ':'.join(seq4)
boy:good:doiido:hello
#合并目录
>>> import os
>>> os.path.join('/hello/','good/boy/','doiido')
'/hello/good/boy/doiido'
.split()用来分离
>>>string = "www.gziscas.com.cn"
# 以'.'为分隔符,若以空格分割则可写成s.split()
>>>print(string.split('.'))
['www', 'gziscas', 'com', 'cn']
# 分割两次
>>>print(string.split('.',2))
['www', 'gziscas', 'com.cn']
# 分割两次,并取序列为1的项
>>>print(string.split('.',2)[1])
gziscas
# 分割两次,并把分割后的三个部分保存到三个文件
>>>u1, u2, u3 =string.split('.',2)
print(u1)—— www
print(u2)—— gziscas
print(u3) ——com.cn
# 分离文件名和路径
>>>import os
>>>print(os.path.split('/dodo/soft/python/'))
('/dodo/soft/python', '')
>>>print(os.path.split('/dodo/soft/python'))
('/dodo/soft', 'python')
# 实例
>>>str="hello boy<[www.baidu.com]>byebye"
>>>print(str.split("[")[1].split("]")[0])
www.baidu.com
x[::-1] #用来逆序,原理暂时还没有搞懂