zoukankan      html  css  js  c++  java
  • 数据结构——算法之(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
    ", argv[1]);
    }
    


  • 相关阅读:
    repr() Vs str()
    默认参数
    元组
    字典
    电脑可以办的两类最基本的事情
    代码块
    变量名
    print的逻辑
    input的逻辑
    让python2听懂中文
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/7044530.html
Copyright © 2011-2022 走看看