来源: 牛客网 http://www.nowcoder.com/questionTerminal/7e8aa3f9873046d08899e0b44dac5e43
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?
输入描述:
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
输出描述:
对于每组数据,输出移位后的字符串。
输入例子:
AkleBiCeilD
输出例子:
kleieilABCD
要求不能用额外的空间,那就只能就地移动了。遍历到一个大写字母,将其后的所有字符向前移动一步,然后将此大写字母放到末尾。重复以上过程。
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while (sc.hasNext()) { String s = sc.nextLine(); char[] a = s.toCharArray(); int n = s.length(); int end = n; for (int i = 0; i < end; ++i) { if (a[i] >= 'A' && a[i] <= 'Z') { char tmp = a[i]; for (int j = i; j < n - 1; ++j) a[j] = a[j + 1]; a[n - 1] = tmp; end--; i--; } } for (int k = 0; k < n; ++k) System.out.print(a[k]); System.out.println(); } } }