27:单词翻转
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
-
输入一个句子(一行),将句子中的每一个单词翻转后输出。
- 输入
- 只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。
- 输出
- 翻转每一个单词后的字符串,单词之间的空格需与原文一致。
- 样例输入
-
hello world
- 样例输出
-
olleh dlrow
思路:
大模拟;
来,上代码:
#include<cstdio> #include<string> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int len_all,len[501],num,now; char word[501],word_all[501][50]; int main() { gets(word); len_all=strlen(word); while(now<len_all) { if(word[now]==' ') { while(word[now]==' ') now++; } else { num++; while(word[now]!=' ') { if(now>=len_all) break; word_all[num][len[num]++]=word[now++]; } } } for(int i=1;i<=num;i++) { int l=0,r=len[i]-1; while(l<r) swap(word_all[i][l++],word_all[i][r--]); } now=0; for(int i=0;i<len_all;i++) { if(i==0||(word[i-1]==' '&&word[i]!=' ')) { printf("%s",word_all[++now]); } if(word[i]==' ') putchar(' '); } return 0; }