字符串的逆转

字符串的普通逆置

描述

输入一个字符串,要求输出它逆置之后的新的字符串
例如:
输入 I like beijing.
输出 .gnijieb ekil i

思路

找出需要逆置字符串的首 start 、尾 end 位置进行标记,然后交换首尾空间内容,然后修改首尾变量

void Reverse(char* str, int start, int end)
{
	end--;  //[) 左闭右开
	while (start < end) {
		char tmp = str[start];
		str[start] = str[end];
		str[end] = tmp;
		start++; end--;
	}
}

字符串的单词逆置

描述

输入 i like beijing.
输出 beijing. like i

思路

首先,实现字符串的普通逆置:
i like beijing. -------------> .gnijieb ekil i
然后实现单词的逆置:
.gnijieb ekil i ----------> beijing. like i

void Reverse(char* str, int start, int end)
{
	end--;  //[) 左闭右开
	while (start < end) {
		char tmp = str[start];
		str[start] = str[end];
		str[end] = tmp;
		start++; end--;
	}
}
void ReverseWork(char* str)
{
	int start = 0, end = 0;
	while (str[start] != '\0') {
		while (str[end] != '\0'&&str[end] != ' ')
			end++;
		Reverse(str, start, end);

		//如果 end == 100 ,即 end 位于字符串末位时
		if (str[end] != '\0')
			start = end + 1;
		else
			start = end;
		end++;
	}
}

int main()
{
	char str[100] = { 0 };
	gets(str);     //C语言中使用
	int n = strlen(str);

	//整体反转
	Reverse(str, 0, n);

	//单词反转
	Reverse(str);

	printf("%s", str);

	return 0;
}

Tips:
欢迎留言讨论鸭~~

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值