翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

  • 示例 1:
    输入: “the sky is blue”
    输出: “blue is sky the”
  • 示例 2:
    输入: “ hello world! “
    输出: “world! hello”
    解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。
  • 示例 3:
    输入: “a good example”
    输出: “example good a”
    解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。
    方法一:split()分割加列表反转
1
2
3
4
5
class Solution:
def reverseWords(self, s: str) -> str:
s_list = s.split()
s_list = s_list[::-1]
return " ".join(s_list)

方法二:双指针法

1
2
3
4
5
6
7
8
9
10
11
class Solution:
def reverseWords(self, s: str) -> str:
class Solution:
def reverseWords(self, s: str) -> str:
s = s.split()
left,right = 0,len(s)-1
while left < right:
s[left],s[right]=s[right],s[left]
left += 1
right -= 1
return " ".join(s)

视频的方法今天有点来不及

右旋字符串

字符串的右旋转操作是把字符串尾部的若干个字符转移到字符串的前面。给定一个字符串 s 和一个正整数 k,请编写一个函数,将字符串中的后面 k 个字符移到字符串的前面,实现字符串的右旋转操作。
例如,对于输入字符串 “abcdefg” 和整数 2,函数应该将其转换为 “fgabcde”。
输入:输入共包含两行,第一行为一个正整数 k,代表右旋转的位数。第二行为字符串 s,代表需要旋转的字符串。
输出:输出共一行,为进行了右旋转操作后的字符串。

  • 样例输入:
    2
    abcdefg
    样例输出:
    fgabcde

数据范围:1 <= k < 10000, 1 <= s.length < 10000

1
2
3
n=int(input())
s=input()
print(s[-n:]+s[:-n])

额,今天考马原上午都在看马原,额,但是不得不说,python真的太刁了,字符串切片操作真的是太方便了,但是我还是要提醒一下,字符串是不可变的,所以切片操作不会改变原字符串,而是返回一个新的字符串。

日记

感觉马原要挂科。明明我背那么久了,结果全背错了,张冠李戴给我玩明白了,我服了。一想到考研要考政治我就绝望