腾讯编程题目
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。 你能帮帮小Q吗?
import java.util.Scanner; /** * 思想就是通过i,j两个游标,通过i记录字符串最后一个是小写字母的位置, * 而j是往前寻找大写字母。当j找到大写字母的时候,就用临时变量记录下来 * j指向的大写字母,之后往迁移动,之后在付给i指向的位置,之后i向前移 * 动一位。 * 对于字符串的末尾为大写的情况,直接让i往前移动一位即可 * * * */ public class Main{ public static void main(String[] Args){ Scanner scanner = new Scanner(System.in); while(scanner.hasNextLine()){ String str = scanner.nextLine(); char[] charStr=str.toCharArray(); check(charStr); } } public static void check(char[] charStr){ char temp; int i=charStr.length-1; if(charStr[i]<'a'){ --i; } for(int j=charStr.length-1;j>=0;--j){ if((charStr[j]<'a')&&(j!=charStr.length-1)){ temp=charStr[j]; for(int m=j;m<i;++m){ charStr[m]=charStr[m+1]; } charStr[i]=temp; --i; } } for(char ch:charStr) System.out.print(ch); System.out.println(); } } /*public class Main{ public static void main(String[] Args){ Scanner sc = new Scanner(System.in); while(sc.hasNextLine()){ String str = sc.nextLine(); for(int i=0;i<str.length();++i){ if(str.charAt(i)>='a') System.out.print(str.charAt(i)); } for(int i=0;i<str.length();++i){ if(str.charAt(i)<='Z') System.out.print(str.charAt(i)); } } } }*/
小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
你能帮帮小Q吗?