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
因為字符串是不可變對象,不能用下標賦值的方式去改變字符串。
劍指offer 05 替換空格
字符串切分:str.split(“x”)
在自己寫程序的時候可以使用 re 模塊,編寫更復雜的切分邏輯
class Solution:
def replaceSpace(self, s: str) -> str:
s = s.split(' ') #以空格拆分
return '%20'.join(s) #字符串連接
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 ,等刷完其他類型的題目,再把這幾道題目不用內置函數重新做一遍。