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

来源:互联网 发布:网络主播喜欢唱的歌 编辑:程序博客网 时间:2024/05/22 00:39

【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】

题目:

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

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]);}


0 0
原创粉丝点击