华为OD刷题C卷 - 每日刷题 8(整形数组按个位值排序,停车场车辆统计)

73 篇文章 0 订阅
37 篇文章 1 订阅

两段代码分别解决了两个不同的算法问题,下面是对它们的概述:

1、(整形数组按个位值排序):

这段代码是解决“整形数组按个位值排序”的问题。它提供了一个Java类Main,其中包含main方法,用于读取输入、执行排序并打印结果。

代码首先使用Scanner从标准输入读取一行文本,该文本包含一个由逗号分隔的整数数组。然后,使用String.split方法根据逗号分隔符将字符串分割成String数组。

接着,使用Arrays.sort方法和一个自定义的Comparator对字符串数组进行排序。排序依据是每个字符串的最后一个字符(即整数的个位数值)。排序完成后,使用String.join方法将排序后的字符串数组重新组合成一个由逗号分隔的字符串。

最后,打印出排序后的字符串。

2、(停车场车辆统计):

这段代码是解决“停车场车辆统计”的问题。它提供了一个Java类Main,其中包含main方法和countMin方法,用于计算停车场最少可以停多少辆车。

main方法使用Scanner读取一行文本,该文本是一个由逗号分隔的整数数组。然后,调用countMin方法并打印结果。

countMin方法的目的是统计字符串中最少可以停多少辆车。代码首先使用String.replaceAll方法将字符串中所有的"111""11""1"替换为单个字符"c",同时将所有的"0"替换为空字符串。这样,字符串中只剩下代表车辆的"c"字符。

最后,返回字符串的长度,即最少停车数目。

package OD200;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;

/**
 * @description 整形数组按个位值排序
 * @level 2
 */

/**
 * 题目描述
 * 给定一个非空数组(列表),其元素数据类型为整型,请按照数组元素十进制最低位从小到大进行排序,十进制最低位相同的元素,相对位置保持不变。
 * <p>
 * 当数组元素为负值时,十进制最低位等同于去除符号位后对应十进制值最低位。
 * <p>
 * 输入描述
 * 给定一个非空数组,其元素数据类型为32位有符号整数,数组长度[1, 1000]
 * <p>
 * 输出描述
 * 输出排序后的数组
 */
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] str = sc.nextLine().split(",");
        //按照最后一位升序排列
        Arrays.sort(str, Comparator.comparingInt(o -> o.charAt(o.length() - 1)));
        String result = String.join(",", str);
        System.out.println(result);
    }
}
package OD210;

import java.util.Scanner;

/**
 * @description 停车场车辆统计
 * @level 5
 * @score 100
 */

/**
 * 题目描述
 * 特定大小的停车场,数组cars[]表示,其中1表示有车,0表示没车。
 * <p>
 * 车辆大小不一,小车占一个车位(长度1),货车占两个车位(长度2),卡车占三个车位(长度3)。
 * <p>
 * 统计停车场最少可以停多少辆车,返回具体的数目。
 * <p>
 * 输入描述
 * 整型字符串数组cars[],其中1表示有车,0表示没车,数组长度小于1000。
 * <p>
 * 输出描述
 * 整型数字字符串,表示最少停车数目。
 */
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //取出所有,号 如1110010011
        String str = sc.nextLine().replaceAll(",", "");
        System.out.println(countMin(str));
    }

    //计算最少停车数 001001000111001
    public static int countMin(String str) {
        str = str.replaceAll("111", "c")
                .replaceAll("11", "c")
                .replaceAll("1", "c")
                .replaceAll("0", "");
        //现在有多少个c就是停了多少车
        return str.length();
    }
}
  • 20
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值