题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思路:直接用封装好的函数就行了
# -*- coding:utf-8 -*-
class Solution:
def ReverseSentence(self, s):
# write code here
if not s:
return ""
l = s.split(' ')
return " ".join(l[::-1])
题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
思路:按照K,把字符串分成两部分,分别翻转这两部分,然后把它们拼在一起,再翻转整个字符串。
# -*- coding:utf-8 -*-
class Solution:
def LeftRotateString(self, s, n):
# write code here
if not s:
return ""
s1 = s[:n]
s2 = s[n:]
s1 = self.Reverse(s1)
s2 = self.Reverse(s2)
s = s1+s2
s = self.Reverse(s)
return s
def Reverse(self, s):
if not s:
return ""
s = list(s)
length = len(s)
start = 0
end = length-1
while start<end:
s[start], s[end] = s[end], s[start]
start += 1
end -= 1
return "".join(s)
另一种比较简洁的写法:
# -*- coding:utf-8 -*-
class Solution:
def LeftRotateString(self, s, n):
# write code here
return s[n:]+s[:n]