- strstr、strtok用法:
https://leetcode-cn.com/problems/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/submissions/
-
strstr和strchar的区别:
char* str = “i love csdns”
char* str1 = “love”
char ch = ‘s’
strstr(str, str1) = “love csdns”
strchar(str, ch) = “sdns”
若无字符串或者字符,返回null -
strtok的用法:
char* str = “i love csdns”
strtok(str, " “)=i
while(NULL != strtok(str,” “)) {
token = strtok(NULL, " “) //持续获取以“ ”分隔的字符串
printf(”%s\n”, token)
}
输出:
i
love
csdns
- 动态数组和静态数组的区别和使用条件:
https://leetcode-cn.com/problems/generate-a-string-with-characters-that-have-odd-counts/submissions/
动态数组与静态数组的区别:内存分配讲的不错
对于leetcode刷题而言:
1、如果仅仅用来作为临时变量用于存储,用静态数组,数组长度参考leetcode题目中的变量范围,一般取最大值(会造成空间浪费,暂时无所谓),静态数组存次数 + qsort,找出字符串中字符个数最多的啥的百试不爽。
静态数组初始化:str[5] = {0}
2、动态数组用于字符串长度未知(strlen(s)+ 1),可以用数组名作为参数传递,如果要输出字符串,使用动态数组,最后加上结束符‘\0’(不加可能造成越界)
动态数组初始化:memset(str, ‘a’ ,strlen(s)) 无符号字符‘a’、‘\0’(0)可以,1不行
- 几个小点:
- qsort参数类型
- memset与strcpy以及sprintf的区别
- 边界相关注意点:
https://leetcode-cn.com/problems/consecutive-characters/submissions/
此题提交了5次,最后一次才弄对
第一次:
https://leetcode-cn.com/submissions/detail/129368889/
边界条件弄错,以为strlen(s)- 1带入会溢出,实际上i++,判断不小于strlen(s)- 1根本不会进入分支
第二次:
https://leetcode-cn.com/submissions/detail/129369389/
每次找出相同的字符串之后,进入下一轮技术,cnt需要置1
第三次:
未考虑字符串大小为1时,不会进入分支,要做特殊处理
第四次:
之前想的是每次字符串不同的时候就输出计数值,但是没有考虑字符串全都相同的情况,因此每次都输出一个计数值就不会错