数据结构与算法 - 字符串

本文介绍了多种字符串操作的方法,包括统计单词数量、字符串逆序、查找唯一字符等,并提供了详细的实现思路和示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题型1:如何统计字符中有多少个单词?

方法1:使用空格作为分隔。如果测出某一个字符为非空格,而它前面的单词是空格,则表示“新的单词开始了”此时单词数count累加1.如果当前字符为非空格而其前面的字符也是非空格,则意味着仍然是原来那个单词的继续,count不应再累加1.

方法2:使用sstream中的isstreamstring实现单词的分隔,将字符串赋值给isstreamstring,以空格将单词分开。

1
2
3
4
5
6
7
8
9
10
11
12
13
char string[BUFFERSIZE];
int count=0,word=0;
while (string[i]!= '\0' )
{
     if (c== ' ' )
         word=0;
     else if (word==0)
     {
         word=1;
         count++;
     }
     i++;
}

题型2:如何将字符串逆序

方法1:普通逆序,从尾到头输入另一数组中

方法2:原地逆序,将两个指针分别指向字符串的头部和尾部,将头部和尾部使用一个临时变量,进行交换,然后头部指针后移,尾部指针前移。

方法3:不允许使用临时变量,可以使用异或来将换前后指针指向的字符。

复制代码
while(p>s)
{
    *p=*p^*s;
    *s=*p^*s;
    *p=*p^*s;
    p--; s++; }
复制代码

题型3:如何找出一个字符串中第一个只出现一次的字符

方法1:使用hash表记录每个字符出现的次数,以字符作为数组下标,数组大小为256.第一遍扫描元素将进行字符统计,第二遍从头到尾找到第一个计数为1的字符。

题型4:字符串的所有子集

参考leetcode:https://leetcode.com/problems/subsets-ii/

题型5:求字符串的所有排列

参考leetcode:https://leetcode.com/submissions/detail/23682769/

转载于:https://www.cnblogs.com/alantu2018/p/8460830.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值