Leetcode (字符串拼接与切分)
题目描述
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
- Python直接进行字符串切片再拼接
代码
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
return s[:n] + s[n:]
方法改进
- 经典三次反转;
- 反转前n个
- 反转剩余
- 反转整体
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
s1 = s[:n][::-1]
s2 = s[n:][::-1]
s3 = s1+s2
return s3[::-1]
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
result =''
for i in range(n, len(s) +n):
x = i%len(s)
result += s[x]
return result
- 复制一遍字符串,然后直接从第n个开始取len(s)长度
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
length = len(s)
return (s+s)[n:n+length]