zoukankan      html  css  js  c++  java
  • 实现指定步长循环后移字符串数组算法

       字符串数组  aaa[] ={'a','b','c','d','e','f','g',''};  实现循环移动;   估计大家都会想到环形结构;对头,就是利用环形思路实现移动算法;

        1. 利用环形越界处理方式

                       (iCurRPo+iStep) % iLen 

                求得移动下一位置

        2. 循环何时结束?   移动到的位置的字符为下一个被移动的字符 , 依次类推无重复移动,只需要循环字符长度次即可

        3. 针对循环到初始位置的处理;   循环一圈可能又回原有位置,这次需要从原有位置的下一位置开始循环处理,依次类推;

       以下为测试通过的代码;也希望大家能留下更高效简洁的实现方式。

    /*
     @pStr 指向数组的执政
     @iStep 循环移动的步调
     @实现按指定间隔向后循环移动字符数组中的字符;  环形实现思路;
    */
    char* LoopMove(char *pStr,int iStep)
    {
    	int iLen = strlen(pStr);
    	int iCurPos = 0 , iNextPos=0 , iLoop =0 ,iLoopBeg= 0;
    	char p,q;
    	p = q = pStr[iCurPos];
    
    	while(iLoop < iLen )
    	{
    		iNextPos = (iCurPos+iStep) % iLen;
    		if(iLoopBeg == iNextPos)
    		{	////闭环移动一圈
    			pStr[iNextPos] = p;
    			iCurPos = ++iLoopBeg;
    			p = pStr[iCurPos];
    		}
    		else 
    		{
    			q = pStr[iNextPos];
    			pStr[iNextPos] = p;
    			p = q;
    			iCurPos = iNextPos;
    		}
    		++iLoop;
    
    	}
    	return pStr;
    }
  • 相关阅读:
    塔 · 第 二 条 约 定
    nyoj 325
    塔 · 第 一 条 约 定
    大一上
    Django之ORM
    mysql概念
    数据库索引
    使用pymysql进行数据库的增删改查
    sql注入攻击
    pymysql
  • 原文地址:https://www.cnblogs.com/pangblog/p/3367671.html
Copyright © 2011-2022 走看看