华为机试题:将字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序关系。例如,def35adh3kjsdf7变换后的结果为defadhkjsdf3537
运行时间限制:无限制
内存限制:无限制
输入:任意字符串,总长度不超过128
输出:排序后的字符串
样例输入:def35adh3kjsdf7
样例输出:defadhkjsdf3537
思路:用两个序列(ArrayList)分别存储数字字符和非数字字符,然后先将非数字字符输出至字符串变量result中,即为结果。
代码如下:
import java.util.ArrayList;
import java.util.Scanner;
public class ChangeStr {
String inputStr;
String outputStr;
public void getInputStr(){
Scanner console = new Scanner(System.in);
System.out.println("请输入需要排序的字符串:");
inputStr = console.nextLine();
console.close();
}
public String getOutputStr(){
ArrayList<Character> strList = new ArrayList<>();
ArrayList<Character> numList = new ArrayList<>();
for(int i=0; i < inputStr.length(); i++){
if(inputStr.charAt(i) >= '0' && inputStr.charAt(i) <= '9'){
numList.add(inputStr.charAt(i));
}else{
strList.add(inputStr.charAt(i));
}
}
numList.trimToSize();
strList.trimToSize();
String result = "";
for(int i=0; i < strList.size(); i++)
result+= strList.get(i);
for(int i=0; i < numList.size(); i++)
result+= numList.get(i);
return result;
}
public static void main(String[] args) {
ChangeStr cs = new ChangeStr();
cs.getInputStr();
String result = cs.getOutputStr();
System.out.println(result);
}
}