//翻转字符串
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));
}
}
翻转字符串
最新推荐文章于 2023-08-18 13:24:32 发布