1.1 字符串的旋转

2018-08-13  本文已影响0人  吴金君

字符串的旋转

这个题目很经典,好像我听广播都听到了:
题目:输入一个英文句子,将它旋转,句号按字符处理。
示例:
输入:"I am a student."
输出:"student. am a I"

#include <iostream>
#include <string>
using namespace std;

void reverseword(string &s,int from,int to)//单词翻转函数,from是单词首元素,to是单词尾元素
{
    char temp;
    while(from<to)
    {
        temp=s[from];
        s[from++]=s[to];    //from前移
        s[to--]=temp;       //to后移
    }
    return;
}

int main(int argc, char *argv[])
{
    string str;
    while(getline(cin,str))
    {
        reverseword(str,0,str.size()-1);     //先把整个字符串翻转
        int from=0;             //from是单词的第一个元素
        for(int i=0;i<str.size();++i)
        {
            if(str[i]==' ')         //判断空格,以空格为间隔把每个字符翻转
            {
                int to=i;           //to为尾元素的后一个坐标
                reverseword(str,from,to-1);//实际做翻转的时候需要to-1得到真正的尾元素
                from =i+1;
            }
        }
        cout <<str <<endl;
    }
    cout << "Hello World!" << endl;
    return 0;
}
上一篇 下一篇

猜你喜欢

热点阅读