翻转字符串

//翻转字符串
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));
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值