字符串
与列表的差异
在python中,字符串是不可变的,而列表是可变的。
处理字符串中"修改"操作的常见做法是:先将字符串转换为列表,完成需要的修改后,再将列表转换回字符串。
res = list(s) #s是一个字符串
for cur in range(0, len(s), 2 * k):
#对于字符串s = 'abc',如果使用s[0:999] ===> 'abc'。字符串末尾如果超过最大长度,则会返回至字符串最后一个值,这个特性可以避免一些边界条件的处理。
res[cur: cur + k] = reverse_substring(res[cur: cur + k])
return ''.join(res)
- 对于字符串s = ‘abc’,如果使用s[0:999] ===> ‘abc’。字符串末尾如果超过最大长度,则会返回至字符串最后一个值,这个特性可以避免一些边界条件的处理。
- Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
symbol = "-";
seq = ("a", "b", "c"); # 字符串序列
print symbol.join( seq );
a-b-c
反转
s[p: p2][::-1]: 获取从 p 到 p2 的子字符串,并使用 [::-1] 进行反转。这是Python切片的一个特性,可以用来快速反转字符串或列表。
s = s[:p] + s[p: p2][::-1] + s[p2:]
python函数
isdigit()
Python isdigit() 方法检测字符串是否只由数字组成,只对 0 和 正数有效。
split()
index()
检查字符串内是否有另一个字符串,不在会抛出异常
try:
return haystack.index(needle)
except ValueError:
return -1
find()
检查字符串内是否有另一个字符串,不在返回-1
KMP算法
前缀表
- 前缀:包含首字母不含尾字母
- 后缀:包含尾字母不含首字母
在前缀表中求最长相等前后缀。
next数组
冲突后回退到相等前缀的下一个位置。