倒置字符串

Posted 跳动的bit

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倒置字符串相关的知识,希望对你有一定的参考价值。

/***********************************************************************
目的:输入一句英文(长度不超过100),并将其中的单词进行倒置,标点不倒置。如 I like beijing. 倒置后变为 beijing. like I
分析:三步翻转法
▶ 1、字符串整体翻转:
.gnijieb ekil I
▶ 2、每个单词逆序
beijing. like I

平台:Visual studio 2017 && windows
*************************************************************************/
📝 实现代码1:

#include<stdio.h>
#include<string.h>
void reverse(char* left, char* right)
{
	while(left < right)
	{
		char temp = 0;
		temp = *left;
		*left = *right;
		*right = temp;
		left++;
		right--;	
	}
}
int main()
{
	char arr[100] = { 0 };
	//输入字符串
	gets(arr);
	//求字符串的长度
	int len = strlen(arr);
	//字符串整体逆置,确定左下标和右下标
	reverse(arr, arr + len - 1);	
	//每个单词逆置
	char* start = arr;
	while(*start)
	{
		char* end = start;
		while(*end != ' ' && *end != '\\0')
		{
			end++;
		}
		reverse(start, end - 1);
		if(*end == ' ')
		{
			//说明后面还有未逆置的单词
			start = end + 1;
		}
		else
		{
			//遇到了'\\0',不能再往后了
			start = end;
		} 
	}
	printf("%s\\n", arr);
	return 0;
}

🧿 非常经典的一道题,曾经是腾讯考过的笔试题
在这里插入图片描述

以上是关于倒置字符串的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现来实现字符串反转,只有单词顺序反转,组成单词的字母不反转

倒置函数reverse的用法

片段着色器中的球面映射

完美世界 字符串倒置输出

倒置字符数组中的字符

C语言描述,将一句话的单词进行倒置,标点符号不倒置。