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

本文介绍了一个简单的算法,用于将字符串中的数字字符与非数字字符分离并重新排序,确保所有数字字符位于字符串末尾,同时保持原有字符的相对顺序不变。通过使用两个ArrayList分别存储数字与非数字字符,最后按需拼接成新的字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

华为机试题:将字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序关系。例如,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);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值