代码随想录|字符串 151.反转字符串里的单词、55.右旋字符串、459.重复的子字符串
python
一、151.反转字符串里的单词
1.核心代码
class Solution:
def reverseWords(self, s: str) -> str:
# 删除前后空白
s = s.strip()
# 反转整个字符串
s = s[::-1]
# 将字符串拆分为单词,并反转每个单词
s = ' '.join(word[::-1] for word in s.split())
return s
从这这道题目可以看出python真的比c++简单好多…
’ '.join(word[::-1] for word in s.split()) 这一行代码做了什么呢?
.split() 方法用于将字符串 s 拆分为若干个单词,这些单词被存储在一个列表中。然后,通过 for word in s.split() 遍历这个列表中的每一个单词,并用 [::-1] 将其反转。 word[::-1] 得到的结果是一个各单词反转的列表, ’ '.join() 将这个列表中的单词以空格为分隔符连接成一个新的字符串。
2.输入输出
def reverseWords(s: str) -> str:
# 删除前后空白
s = s.strip()
# 反转整个字符串
s = s[::-1]
# 将字符串拆分为单词,并反转每个单词
s = ' '.join(word[::-1] for word in s.split())
return s
if __name__=="__main__":
s=input().strip()
result = reverseWords(s)
print(result)
输入输出超简单
二、55.右旋字符串
我的天,python处理字符串也太轻松了吧。。
k=int(input())
s=input()
news=s[len(s)-k:]+s[:len(s)-k]
print(news)
最简单的一集…
三、459.重复的子字符串
KMP,前缀表
二刷的时候已经忘了思路了,我只想到要用KMP
思路是:再重复一次,如果中间(去除首尾)可以再形成一个它本身,证明是可重复的
咱已经将懒了能用自带函数,就用自带函数
class Solution:
def repeatedSubstringPattern(self, s: str) -> bool:
n = len(s)
if n <= 1:
return False
ss = s[1:] + s[:-1]
print(ss.find(s))
return ss.find(s) != -1
字符串是检索其首次出现的位置,如果没有出现则返回-1
2、输入输出
s=input()
ss=s[1:]+s[:-1]
print(ss.find(s)!=-1)
总结
字符串好简单,用python写字符串好简单…