题解 | 倒置字符串

倒置字符串

https://www.nowcoder.com/practice/ee5de2e7c45a46a090c1ced2fdc62355

#include <stdio.h>
#include <string.h>
#include<assert.h>

void swap_char(char* a, char* b)//交换字符位置
{
    char t=*a; *a = *b; *b = t;
}

void reverse_alpha(char* left, char* right)//逆序字符串
{
	while (left < right)
		swap_char(left++,right--);
}

void reverse_words(char* str)
{
	assert(str != NULL);
	int end = strlen(str) - 1, start = end;
	reverse_alpha(str, str+end);//逆序整个字符串
	do//倒着逆序每个单词
	{
		while (start && *(str + start-1) != ' ')//找单词开头下标
			start--;
		reverse_alpha(str + start, str+end);
		if(start)
			start -=2;//单词和单词之间隔一个空格,因此-2直接跳到下一个单词最后一个字母下标
		end =start;//存储单词最后一个字母下标
	} while (end);
}

	
int main()
{
	char src[101] = {0};
    gets(src);
    reverse_words(src);
	puts(src);
	return 0;
}

全部评论

相关推荐

04-08 10:36
已编辑
华南理工大学 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务