每天一道算法题第4天-- 倒置字符串

倒置字符串

  • 1.题目
  • 2.思路
    • 2.1思路1
    • 2.2思路1代码
    • 2.3思路2
    • 2.4思路2代码

1.题目

链接: 倒置字符串
每天一道算法题第4天-- 倒置字符串_第1张图片

2.思路

2.1思路1

用分治思想 想把所有字符串倒置 如题目:得到.gnijeb ekil I

最后再把每个单词旋转回来 用到的函数是reverse();

2.2思路1代码

#include 
#include 
using namespace std;
#include

int main()
{
 string s;
 getline(cin, s);//getline遇到空格不会结束 遇到回车才结束

//反转整个字符串
reverse(s.begin(), s.end());
//反转单词
 auto start=s.begin();
while(start!=s.end())
{
    auto end=start;
    while (end!=s.end()&&*end!=' ') //找到单词的最后一个字母
    {
        end++;
    }
    reverse(start, end);
    if(end!=s.end())
    {
        start=end+1;//移到下一个单词
    }
    else 
    {
    start=end; //跳出循环
    }
}
cout<<s<<endl;

}
// 64 位输出请用 printf("%lld")

2.3思路2

第二思路是一个比较讨巧的思路,直接利用cin>>s接收输入,遇到空格就结束了,自然就分割开了每个单
词,其次将每次接收到的单词拼接到之前串的前面就逆置过来了

2.4思路2代码

#include 
#include 
using namespace std;
// cin读取string时自动会被空格分隔开,用另一个字符串存储进行逆序输出
int main()
{
string s1, s2;
cin >> s2;
while (cin >> s1)
s2 = s1 + " " + s2;
cout << s2 << endl;
return 0;
}

你可能感兴趣的:(C++方向算法题目,算法,c++,开发语言)