问题链接:POJ NOI0107-27 单词翻转。
总时间限制:
1000ms
内存限制:
65536kB
描述
输入一个句子(一行),将句子中的每一个单词翻转后输出。
输入
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
样例输入
hello world
样例输出
olleh dlrow
问题链接:Bailian4104 单词翻转
问题分析:实现单词翻转大致有两种方法,一是单词的前后字母对调,二是使用堆栈实现。
程序说明:
本程序构造了一个堆栈实现单词翻转。自己实现需要对堆栈的机制十分通晓,可以定制的非常简单。
本程序直接对输入的字符流进行处理,需要更高的编程技巧。需要考虑没有回车而直接EOF的情形。
本程序是CV实现的,使用了参考链接中的代码。
参考链接:HDU1062 Text Reverse题记:(略)
AC的C语言程序如下:
/* Bailian4104 单词翻转 */
#include <stdio.h>
#define MAXSTACK 500
char stack[MAXSTACK];
int pstack;
void push(char c)
{
stack[pstack++] = c;
}
char pop()
{
return stack[--pstack];
}
int main(void)
{
char c;
pstack = 0;
for(;;) {
c = getchar();
if(c == ' ' || c == '\n' || c == EOF) {
while(pstack)
putchar(pop());
if(c != EOF)
putchar(c);
} else
push(c);
if(c == '\n' || c == EOF)
break;
}
return 0;
}