字符串的旋转
这个题目很经典,好像我听广播都听到了:
题目:输入一个英文句子,将它旋转,句号按字符处理。
示例:
输入:"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;
}
网友评论