栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++ 翻转字符串里面的单词

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++ 翻转字符串里面的单词

题目:

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:
输入: "the sky is blue"
输出: "blue is sky the"

示例 2:
输入: "  hello world!  "
输出: "world! hello"
解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。

示例 3:
输入: "a good   example"
输出: "example good a"
解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

思路:

1.将字符串多余的空格除去(本题难点);

2.将去除空格和后的字符串翻转;

3.将单词挨个翻转,以空格为翻转标志。

#include
#include 
using namespace std;
//理解代码需要注意空格的个数,删除完空格后,中间的还剩一个,前后没有
void reverse(string &s,int start,int end)
{
    for (int i=start,j=end;i0&&s[fast]==' '&&fast0&&s[fast]==' '&&s[fast-1]==' ')
        {
            continue;
        }
        else
        {
            s[slow++]=s[fast];//s[slow]=s[fast];slow++;
        }
    }
    if(slow-1>0&&s[slow-1]==' ')
    {
        s.resize(slow-1);
    }
    else
    {
        s.resize(slow);
    }   
}

int main()
{
    string s;
    cout<<"string: "< 

对于reverse函数,c++库中也有,但是其复杂度比较高,所以这里重写。

结果如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/921036.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号