翻转字符串

//翻转字符串
public class StringRotation{
	
	//单词顺序逆序((1)先整体旋转,然后(2)每个单词进行旋转)
	public static void WordRotation(char[]chas)
	{
         if(chas==null||chas.length==0)
         {
         	return;
         }
         reverse(chas,0,chas.length-1); //(1)字符串的整体旋转
         
         //(2)每个单词进行旋转
         int l=-1;
         int r=-1;
         for(int i=0;i<chas.length;i++)
         {
         	if(chas[i]!=' ')
         	{
         		l=i==0||chas[i-1]==' '?i:l;
         		r=i==chas.length-1||chas[i+1]==' '?i:r;
         	}
         	if(l!=-1&&r!=-1)
         	{
         		reverse(chas,l,r);
         		l=-1;
         		r=-1;
         	}
         }
         

	}

	//字符串的部分位置的旋转
	public static void reverse(char[]chas,int start,int end)
	{
        
        if(start>end)
        {
        	return;
        }
        char temp;//临时变量
        while(start<end)
        {
        	temp=chas[start];
        	chas[start]=chas[end];
        	chas[end]=temp;
        	start++; //向前移动一个位置
        	end--;   //向后移动一个位置

        }

	}

	//字符串的整体旋转
	public static void reverse2(char[]chas)
	{
		char temp;
		for(int i=0;i<chas.length/2;i++)
		{
			temp=chas[i];
			chas[i]=chas[chas.length-1-i];
            chas[chas.length-1-i]=temp;
		}

	}

	//部分字符串旋转
	public static void PartRotation(char[]chas,int size)
	{ 
		if(chas==null||chas.length==0||size<=0||size>chas.length)
		{
			return;
		}
		reverse(chas,0,size-1);
		reverse(chas,size,chas.length-1);
		reverse(chas,0,chas.length-1);
         

	}
    
	public static void main(String[]args)
	{
         char[]chas={'d','o','g',' ','l','o','v','e','s',' ','p','i','g'};
         //reverse(chas,0,chas.length-1);
         WordRotation(chas);
         System.out.println(String.valueOf(chas));

         char[]chas2={'A','B','C','D','E'};
         PartRotation(chas2,3);
         System.out.println(String.valueOf(chas2));
	}
}
相关文章
相关标签/搜索
每日一句
    每一个你不满意的现在,都有一个你没有努力的曾经。
公众号推荐
   一个健康类的公众号,欢迎关注
小青桔健康