字符串小结

本文概述了C++中的字符串概念,包括C风格字符串、C++标准库中的string和vector的区别,以及双指针法在字符串操作中的应用。重点介绍了KMP算法,强调其在字符串查找中的重要性,总结了字符串类题目的特点和难点。
摘要由CSDN通过智能技术生成

代码随想录训练营小结:字符串

1.字符串概念

  • 用法:
    C语言:char a[5] = “asd”;
    C++:string a = “asd”;
  • 区别:
    在C语言中,把一个字符串存入一个数组时,也把结束符 ‘\0’存入数组,并以此作为该字符串是否结束的标志。’\0’占一个字节,但是在使用 strlen() 计算长度的时候不会把’\0’算上。
    在这里插入图片描述
  • string、char*、vector的区别
    1. string:C++ 标准库中的string类,提供了高级的字符串处理方式,是一个对象。
    2. char*:C风格的字符串,是一个指向字符的指针,指向字符串的起始位置。
    3. vector:C++ 标准库中的vector类,用于表示一组字符,是一个对象,不如string专业

2.双指针法

  • 反转字符串
    在这里插入图片描述

  • 替换空格
    在这里插入图片描述

  • 翻转字符里的单词

3.反转系列

  • 反转字符串II
    在这里插入图片描述

  • 翻转字符串里的单词

  • 左旋转字符串
    在这里插入图片描述

4.KMP

KMP的主要思想是当出现字符串不匹配时,可以知道一部分之前已经匹配的文本内容,可以利用这些信息避免从头再去做匹配了。
KMP的精髓:前缀表

  • 实现strStr()
  • 重复的子字符串

5.总结

  1. 字符串类类型的题目,往往想法比较简单,但是实现起来并不容易。
  2. 双指针法是字符串处理的常客。
  3. KMP算法是字符串查找最重要的算法,但彻底理解KMP并不容易。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值