(java)华为机试题:字符串变换

华为机试题:将字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序关系。例如,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);
    }
}
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页