255. 统计是给定字符串前缀的字符串数目
2023-04-01 01:00 作者:目标力扣Knight | 我要投稿

方法一:双指针
获取word中每一个元素,遍历该元素比对其与s的重合程度,若遍历结束指针大小与该元素相等,则说明是前缀
该判断方法将调用多次,至多一千次,因此封装为函数
Python版本
C++版本
复杂度分析
时间复杂度: O(N)。考虑到标的字符串和比较字符串可以完全相同,那么比较次数可能为 words 数组长度与 s 串长度的乘积,即 1000 x 10 = 10000
空间复杂度:O(1)。
方法二:调用库函数
Python 中 str 数据类型有此方法 str.startswith()
可以帮助我们快速判断前缀
Python版本
C++版本string.find()
方法不稳定,暂无
复杂度分析
时间复杂度:O(N)。仅考虑循环次数,此处的N指的是 words 数组的长度,上限为1000. 考虑到子字符最长为10,即常数C,总遍历次数上限为10000,可看做复杂度为 N。
空间复杂度:O(1)。
备注
此题和
884. 两句话中的不常见单词
都使用了封装,即把验证每一个数据对象是否为前缀的部分代码封装为一个子函数,在C++
中是以lambda
函数的方式实现的。这启示我们对于代码中相同的结构尽量做出抽象,但同时注意到,函数形式比起匿名函数宽容度更高,即对数据的操作更加自由,而且语法层面不太容易出错,一定要记得:
匿名函数整体作为一句话代码,其后一定有分号