首页 > 代码库 > 数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)
数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱: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]); }
数据结构——算法之(031)(将字符串中全部小写字母排在大写字母的前面)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。