腾讯2017暑期实习生编程题(二)

来源:互联网 发布:java德州扑克牌比大小 编辑:程序博客网 时间:2024/04/29 15:58
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?



输入描述:

输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.



输出描述:

对于每组数据,输出移位后的字符串。


输入例子:
AkleBiCeilD

输出例子:

kleieilABCD

因为不能申请额外空间,所以考虑交换字符位置。

public class Main {
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);
        char[] strs = in.nextLine().toCharArray();
        int len = strs.length;
        for(int i = len - 1; i >= 0; i--){
            for(int j = 0; j < i; j++){
                bubble(strs, j+1, j);
            }
        }
        System.out.println(new String(strs));
    }
    
    public static void bubble(char[] strs, int i, int j){   
        if(strs[j] >= 'A' && strs[j] <= 'Z' && strs[i] >= 'a' && strs[i] <= 'z'){
            char tmp = strs[j];
            strs[j] = strs[i];
            strs[i] = tmp;
        }
    }
}



0 0