字符串常量 - 对字符串中的所有单词进行倒排
程序员文章站
2024-03-15 09:09:05
...
字符串常量 - 对字符串中的所有单词进行倒排
1. ASCII Table and Description
'0'
- 48'1'
- 49
…'8'
- 56'9'
- 57
'A'
- 65'B'
- 66
…'Y'
- 89'Z'
- 90
'a'
- 97'b'
- 98
…'y'
- 121'z'
- 122
' '
- 32 - Space - 空格
10 - LF (NL line feed, new line) - 换行
13 - CR (carriage return) - 回车
2. 对字符串中的所有单词进行倒排
- 每个单词是以 26 个大写或小写英文字母构成。
- 非构成单词的字符均视为单词间隔符。
- 要求倒排后的单词间隔符以一个空格表示。如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符。
- 每个单词最长 20 个字母。
输入描述:
输入一行以空格来分隔的句子。
输出描述:
输出句子的逆序。
EXAMPLE:
输入
I am a student
输出
student a am I
//============================================================================
// Name : input
// Author : Yongqiang Cheng
// Version : Version 1.0.0
// Copyright : Copyright (c) 2019 Yongqiang Cheng
// Description : Hello World in C++, Ansi-style
//============================================================================
#include <stdio.h>
#include <string.h>
char * inference_function(const char *input_string)
{
int right_idx = 0, left_idx = 0;
int string_length = 0;
char *output_string = NULL;
int out_idx = 0;
if (NULL == input_string)
{
return NULL;
}
string_length = strlen(input_string);
if (0 == string_length)
{
return NULL;
}
output_string = (char *)malloc((string_length + 1) * sizeof(char));
right_idx = string_length - 1;
left_idx = string_length - 1;
while (left_idx >= 0)
{
char chi = input_string[left_idx];
if (((chi >= 'a') && (chi <= 'z')) || ((chi >= 'A') && (chi <= 'Z')))
{
while (left_idx >= 0)
{
char chj = input_string[left_idx];
if (((chj >= 'a') && (chj <= 'z')) || ((chj >= 'A') && (chj <= 'Z')))
{
left_idx--;
}
else
{
break;
}
}
for (int jdx = left_idx + 1; jdx <= right_idx; jdx++)
{
output_string[out_idx] = input_string[jdx];
out_idx++;
}
output_string[out_idx] = ' ';
out_idx++;
right_idx = left_idx;
}
else
{
right_idx--;
left_idx--;
}
}
if (out_idx > 0)
{
output_string[out_idx - 1] = '\0';
}
else
{
output_string[out_idx] = '\0';
}
return output_string;
}
int main()
{
char input_string[5000] = { 0 };
char *output_string = NULL;
if (NULL == gets(input_string))
{
return 0;
}
output_string = inference_function(input_string);
if (NULL != output_string)
{
printf("%s\n", output_string);
free(output_string);
output_string = NULL;
}
return 0;
}