算法刷题-字符串-28. 实现 strStr(),459.重复的子字符串,字符串总结,双指针回顾(python)

本文介绍了如何使用Python实现strStr函数,采用滑动窗口法及KMP算法优化字符串匹配过程。同时讨论了检查字符串中重复子串的方法,以及Python中常用字符串处理函数的运用,如双指针技巧的应用。
摘要由CSDN通过智能技术生成

28. 实现 strStr()

背景:给两字符串,求第2个字符串在第一个字符串中第一个匹配的下标,不存在则返回-1

思路:

  1. 匹配串的长度已知,则使用滑动窗口法,去验证两串是否匹配,一旦匹配返回对用坐标
  2. KPM是啥?

    KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。next数组记录前缀表?so hard,先放弃为敬

实践:

复盘:


459.重复的子字符串

背景:给定一个非空的字符串 s ,检查是否可以通过由它的一个子串重复多次构成。

思路:重复1次不行,所以字符串长度为1排出,怎么证明重复多次,并且重复多次能构成s呢?依次遍历判断是几位数,记录几位数为N,直接判断当前子串的长度*重复倍数==s,则有戏

实践:

复盘:

看题解百花齐放:

return True if re.fullmatch(r'([a-z]+)\1+',s) else False


字符串总结

结合python来说:

  1. len(): 返回字符串的长度。

  2. strip(): 去除字符串两端的空白字符。

  3. lstrip(): 去除字符串左侧的空白字符。

  4. rstrip(): 去除字符串右侧的空白字符。

  5. split(): 根据指定的分隔符将字符串拆分成子串列表。

  6. join(): 使用指定的分隔符将列表中的元素连接成一个字符串。

  7. replace(): 替换字符串中的子串。

  8. upper(): 将字符串中的所有字符转换为大写。

  9. lower(): 将字符串中的所有字符转换为小写。

  10. capitalize(): 将字符串的首字母转换为大写,其余字母转换为小写。

  11. title(): 将字符串中的每个单词的首字母转换为大写,其余字母转换为小写。

  12. startswith(): 检查字符串是否以指定的前缀开始。

  13. endswith(): 检查字符串是否以指定的后缀结束。

  14. find(): 在字符串中查找子串的位置(从左到右),返回子串开始位置的索引,如果没有找到则返回-1。

  15. rfind(): 与 find() 类似,但是从右向左查找子串的位置。

  16. index(): 与 find() 类似,但是当子串不存在时,会抛出 ValueError 异常。

  17. count(): 统计字符串中子串出现的次数。

  18. isdigit():判断指定字符是否是数字


双指针回顾:

“通过两个指针在一个for循环下完成两个for循环的工作”


  • 8
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值