string类型基础算法题详解

本文详细解析了五道关于字符串处理的算法题目,包括查找字符串最后一个单词的长度、找到第一个唯一字符、反转字母、验证回文串以及字符串相加。通过分析思路和提供不同方法,帮助读者理解和掌握C++中处理字符串的技巧。
摘要由CSDN通过智能技术生成

目录

1.字符串最后一个单词的长度

2.字符串中的第一个唯一字符

3.仅仅反转字母

4.验证回文串

5.字符串相加


1.字符串最后一个单词的长度

【思路】:这道题找到最后一个单词也就是找到最后一个空格,可以用rfind反向迭代找到最后一个空格,算出最后一个单词的大小。如果只有一个单词没有空格的话那么直接输出这个单词的长度。

但是要注意的是,在单词与单词之间的间隔,是用空格来进行的,直接用cin>>s时候,如果输入像hello nowcoder这样的字符串,s仅识别第一个单词,空格之后的字符串被识别为下一个字符串,留在了缓冲区。所以不能用cin>>s来获取字符串。

想要将空格页识别成字符串

【方法一】:

    string s;
    //C写法
    char ch = getchar();//获取一个字符
	while (ch != '\n')//循环加入s来获取字符串,遇到\n就是换行停下来
	{
		s += ch;
		ch = getchar();
	}
	//getline(cin,s);

【方法2】:

    string s;
    //C++写法
	char ch = cin.get();
    while(ch!='\n')
    {
        s+=ch;
        ch=cin.get();
    }

【方法3】:

在C++的string类中,写入了一个成员方法getline,用来获取字符串的,参数1是输入流,参数2为要获取的字符串。其基本思想就是上面代码的体现。

string s;
getline(cin,s);
#include<iostream>
using namespace std;
#include <string>

int main()
{
    string s;
    getline(cin,s);
    size_t pos=s.rfind(' ');//获取从后向前数第一个空格位置
    
    if(pos!=string::npos)//当不等于npos(值为-1,也就代表没找到),找到了
    {
        s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值