Python 关于字符串的有很多内置函数,可以用来简化代码,实现题目要求。这种方式虽然不锻炼代码能力,但代码简便,值得总结一下,以备不时之需。
514 反转字符串②
把字符串转换为列表: list(str)
把列表连成字符串: “”,join(list)
翻转列表:list[::-1]
也可直接翻转字符串:str[::-1]
class Solution:
def reverseStr(self, s: str, k: int) -> str:
arr=list(s)
for i in range(0,len(arr),2*k):
arr[i:i+k]=arr[i:i+k][::-1]
return "".join(arr)
注:这里需要把字符串转成list再做操作,
如果不转则会报错 ‘str’ object does not support item assignment
因为字符串是不可变对象,不能用下标赋值的方式去改变字符串。
剑指5 替换空格
字符串切分:str.split(“x”)
在自己写程序的时候可以使用 re 模块,编写更复杂的切分逻辑
class Solution:
def replaceSpace(self, s: str) -> str:
s = s.split(' ') #以空格拆分
return '%20'.join(s) #字符串连接
151 颠倒字符串中的单词
class Solution(object):
def reverseWords(self, s):
s = s.split()
s = s[::-1]
return " ".join(s)
拆成列表,然后列表逆序,然后再拼成字符串。
剑指58 ②左旋转字符串
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
return s[n:]+s[:n]
本质就是字符串切片。
28 实现strStr()
在字符串中查找子字符串:bigStr.find(smallStr)
class Solution:
def strStr(self, haystack: str, needle: str) -> int:
return haystack.find(needle)
不禁感叹,内置函数真是好东西,救我狗命。
459 重复的子字符串
class Solution:
def repeatedSubstringPattern(self, s: str) -> bool:
return True if s in (s + s)[1:-1] else False
这个思路,真是惊为天人,复制一次,掐头去尾,如果还能搜索到,就说明有重复字符子串。
尾记
立个 flag ,等刷完其他类型的题目,再把这几道题目不用内置函数重新做一遍。