Bootstrap

Leetcode Python学习记录——代码随想录字符串篇

字符串

与列表的差异

在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)
  1. 对于字符串s = ‘abc’,如果使用s[0:999] ===> ‘abc’。字符串末尾如果超过最大长度,则会返回至字符串最后一个值,这个特性可以避免一些边界条件的处理。
  2. 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数组

冲突后回退到相等前缀的下一个位置。

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;