题目描述
给定一个字符串chas[],其中只含有字母字符和“”字符,现在想把所有“”全部挪到chas的左边,字母字符移到chas的右边。完成调整函数。
输入描述:
输入一行字符串代表chas(1≤lengthchas≤105)(1 \leq length_{chas} \leq 10^5 )(1≤lengthchas≤105)。
输出描述:
输出一行,代表返回的字符串。
示例1
输入
qw**23
输出
**qw23
解法一:字符串拼接
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args)throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String res = getChange(s);
System.out.println(res);
}
public static String getChange(String s){
if(s==null||s.length()<2) return s;
char[] arr = s.toCharArray();
StringBuilder sb = new StringBuilder();
for(int i=0;i<arr.length;i++){
if(arr[i]=='*'){
sb.insert(0,"*");
}else{
sb.append(arr[i]);
}
}
return sb.toString();
}
}
解法二:数组调整
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args)throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
String res = getChange(s);
System.out.println(res);
}
public static String getChange(String s){
if(s==null||s.length()<2) return s;
char[] arr = s.toCharArray();
int index = arr.length-1;
for(int i=arr.length-1;i>=0;i--){
if(arr[i]!='*'){
arr[index--] = arr[i];
}
}
for(int i=0;i<=index;i++){
arr[i] = '*';
}
return String.valueOf(arr);
}
}