题目描述
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
接口说明/**
* 反转句子
*
* @param sentence 原句子
* @return 反转后的句子
*/
public String reverse(String sentence);
输入描述:
将一个英文语句以单词为单位逆序排放。
输出描述:
得到逆序的句子
示例1
输入
复制
I am a boy输出
复制
boy a am I
前面的问题都是以空间换取了时间。这次是在上面的基础上增加了一个判断是否是一个单词的过程。
本此代码未优化,目的是快速的熟悉题目
#include <stdio.h>
#include <string.h>
int main()
{
char input[1000] = {0};
char output[1000] = {0};
char tmp[1000] = {0};
int length = 0;
int i, j = 0;
//记录插入的位置
int input_flag = 0, output_flag = 0;
gets(input);
//printf("%s\n", input);
length = strlen(input);
for (i = 0, j = 0; i < length; i++)
{
if (input[length - i - 1] != ' ' )
{
tmp[j] = input[length - i - 1];
j++;
}
else
{
//printf("%s\n", tmp);
while(j)
{
output[output_flag] = tmp[j-1];
output_flag++;
j--;
}
output[output_flag] = ' ';
output_flag++;
//break;
j = 0;
}
}
//printf("%s\n", tmp);
while(j)
{
output[output_flag] = tmp[j-1];
output_flag++;
j--;
}
printf("%s\n", output);
j = 20;
/*
while (j)
{
printf("%c", tmp[length - j - 1]);
j--;
}
printf("\n");
*/
return 0;
}