题目描述:小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?
用冒泡排序的思想,从后往前扫描。
import java.util.Scanner;
public class ChrTransfer {
public static String transfer(String s1){
char[] arr=s1.toCharArray();
int j;
for(int i=arr.length-1;i>0;i--){
if(Character.isLowerCase(arr[i])){
j=i;
while (Character.isLowerCase(arr[j])&&j>0) j--;//找到下一个大写字母
if(j==0&&Character.isLowerCase(arr[j])) break;//如果到头了,说明没有大写字母,跳出循环即可
//开始把大写字母移过去
char tmp=arr[j];
for(;j<i;j++){
arr[j]=arr[j+1];
}
arr[j]=tmp;
}
}
return String.valueOf(arr);
}
public static void main(String[] args) {
Scanner in =new Scanner(System.in);
while (in.hasNext()) {
String s1=in.nextLine();
System.out.println(transfer(s1));
}
}
}