leetcode字符串类型分类及说明

  1. 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

  1. 动态数组和静态数组的区别和使用条件:
    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的区别
  1. 边界相关注意点:
    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时,不会进入分支,要做特殊处理
    第四次:
    在这里插入图片描述
    之前想的是每次字符串不同的时候就输出计数值,但是没有考虑字符串全都相同的情况,因此每次都输出一个计数值就不会错
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值