欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

字符串常量 - 对字符串中的所有单词进行倒排

程序员文章站 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. 对字符串中的所有单词进行倒排

  1. 每个单词是以 26 个大写或小写英文字母构成。
  2. 非构成单词的字符均视为单词间隔符。
  3. 要求倒排后的单词间隔符以一个空格表示。如果原字符串中相邻单词间有多个间隔符时,倒排转换后也只允许出现一个空格间隔符。
  4. 每个单词最长 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;
}

字符串常量 - 对字符串中的所有单词进行倒排

字符串常量 - 对字符串中的所有单词进行倒排

字符串常量 - 对字符串中的所有单词进行倒排