Python
中存在着intern
机制。由于字符串是不可变对象,它对字符串维护着一个字典,每次新建一个字符串变量时,会先查询字典中是否已经有该字符串值。如果有,直接引用。如果没有再新建。这个机制决定了字符串值相等,则一定指向相同的对象。 ————引用自Codefmeister文
所以python判断字符串是否相等的时间复杂度可看作O(1) (对,对吧。。。)
zhu = input('主串:')
zi = input('子串:')
lzi = len(zi)
for i in range(len(zhu)-len(zi)+1):
if zhu[i:i+lzi] == zi:
print(i)
break
input('Press \'Enter\' to leave.')
简而言之就是不断将主串切片成与子串相同长度的小部分,再比较
这是我的成果,据自己观察时间复杂度为O(m-n) 我希望没错,但如果有问题务必告诉我。但我由于还在上学比较忙,可能过很久才能看到。。。
ps:最后一行是为了迎合命令行窗口。