数据结构学习(二)字符串

字符串

1. 概念

字符串就是特殊的字符数组,字符数组末尾的元素为 ‘\0’。和数组一样可以使用arr[i]或*(arr+i)来访问元素。

    无论是用数组保存字符串(如:char arr[] = "Hello,World";),还是用指针保存字符串(如:char *brr = "Hello,World";),我们都可以使用字符串函数strlen(),来计算字符串长度。因为这里数组名和指针名保存着字符串在内存中的首地址,并且这里是字符串(存储时末尾有一个隐藏的'\0'),以 '\0' 结尾。这样,对于字符数组:使用sizeof(arr)/sizeof(arr[0]),求出来的长度比strlen求出的长度大1,因为sizeof计算数组大小时包含了'\0',strlen计算时忽略了'\0';对于字符串指针:sizeof(brr)/sizeof(brr[0])计算结果为4,因为brr是指针名,sizeof(brr)计算的是指针的大小为4,再除以元素大小1,所以结果为4。

————————————————
版权声明:本文为CSDN博主「加油JIAX」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_50803498/article/details/126528554

2. 解题技巧(我的总结)

1> 字符串分割

题目说明实现
640. 求解方程通过分割字符串统计x的系数和方程的常数项我的提交

2> 字符串匹配
KMP算法:next数组

i, l := 1, 0
	for i < len(s) {
		if s[i] == s[l] {
			l++
			next[i] = l
			i++
		} else {
			if l == 0 {
				next[i] = 0
				i++
			} else {
				l = next[l-1]
			}
		}
	}
题目说明实现
686. 重复叠加字符串匹配KMP算法,如果直到i>ab长度之和都未匹配成功,则一定无法匹配我的提交
210. 课程表 IIKMP算法我的提交

3> 字符串问题分类讨论

题目说明实现
809. 情感丰富的文字使用双指针匹配,分类讨论所有情况我的提交
816. 模糊坐标分左右,分长度,再分首尾字母是否为0我的提交

3> 字符串问题分类讨论

题目说明实现
955. 删列造序 II从左到右按列讨论,抽象成单个字符串的情形,使用所有字符串做限制我的提交

3. 更多练习

4. 参考

  1. LeetCode(力扣)初级算法 字符串篇
  2. 总库:tryHard
  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值