数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)

Posted slgkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)相关的知识,希望对你有一定的参考价值。

【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:[email protected]

题目:

函数将字符串中的字符‘*‘移到串的前部分。前面的非‘*‘字符后移。但不能改变非‘*‘字符的先后顺序,函数返回串中字符‘*‘的数量。
题目分析:

1、须要保持非‘*‘字符的顺序

2、不开辟额外的空间

3、用快慢指针。指向字符串尾巴,快指针指向非‘*’字符串,慢指针指向‘*‘,然后交换指针内容就可以

算法实现:

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

int str_move_char_to_head(char *str, char move_char)
{
	int len = strlen(str);
	char *fast = str + len - 1;
	char *slow = fast;
	char temp;

	while(len--)
	{
		if(*slow != move_char)
		{
			slow--;
			fast = slow;
			continue;
		}
		if(*fast == move_char)
		{
			fast--;
			continue;
		}
		
		{
			temp = *fast;
			*fast-- = *slow;
			*slow-- = temp;
		}
	}
}

int main(int argc, char *argv[])
{
	printf("%s----->", argv[1]);
	str_move_char_to_head(argv[1], ‘*‘);
	printf("%s\n", argv[1]);
}


以上是关于数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)的主要内容,如果未能解决你的问题,请参考以下文章

图解算法系列之希尔排序

linux umask权限算法

python之文件操作

从无到有算法养成篇-链式存储结构之循环链表

手势姿态估计,隔空写字绘图

(031)Spring Boot之服务的注册与发现,使用zookeeper演示负载均衡