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

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

时间:2024-06-08 13:30:12浏览次数:24  
标签:String OD Scanner 按个 str 数组 字符串 排序 刷题

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

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();
    }
}

标签:String,OD,Scanner,按个,str,数组,字符串,排序,刷题
From: https://blog.csdn.net/2401_84585615/article/details/139429070

相关文章

  • LeetCode 第72题:编辑距离
    在我们日常生活中,有时候会因为一两个字母的错误,让一段话的意思变得完全不同。就像你给女朋友发信息“我爱你”,结果手一抖发成了“我恨你”,这可不得了。因此,如何衡量两个字符串之间的差异,并将一个字符串变成另一个字符串,这就是编辑距离(EditDistance)问题要解决的核心。文......
  • C#Modbus串口通信
    Modbus是一种应用层协议,主要用于工业自动化和控制系统中。它定义了一种消息结构,使得控制器(如PLC)能够与其它设备(如传感器、执行器、驱动器等)进行通信。Modbus协议支持多种通信方式,包括但不限于串行通信(RS-232、RS-485)、以太网TCP/IP、以及无线通信。Modbus串口通信:Modbus串口......
  • (PAT乙级刷题)String复读机
    题目:题解:#include<iostream>#include<map>usingnamespacestd;map<char,int>mp;intmain(){stringkey="String";stringt;cin>>t;//记录字符数量for(inti=0;i<t.size();i++){mp[......
  • [leetcode 30 串联所有单词的子串 10ms]
    算法复杂度o(1):复杂最坏复杂度是o(s.length)和o(m*total)的最大值码代码速度要变快,变量,算法要先想清楚importjava.util.*;classSolution{publicList<Integer>findSubstring(Strings,String[]words){m=words[0].length();n=words......
  • 从VS Code源码看清晰代码之美
    VSCode的产品做的很优秀,其源码也质量颇高,清晰、整洁、富有美感。下面是 src\vs\workbench\common\notifications.ts 文件中的两段代码,大家感受一下:getsticky():boolean{if(this._sticky){returntrue;//explicitlysticky}consthasAct......
  • [Tkey] CodeForces 1267G Game Relics
    太神了这题,膜拜出题人orz。思考一首先是大家都提到的一点,先抽卡再买。这里来做个数学分析。假设我们还剩\(k\)种没有买,其实我们是有式子来算出它的花费期望的。WIKI上提到,假设一个事件的概率为\(p\),则遇到它的期望为\(\frac{1}{p}\),因此,对于这个题,抽到一个新物品的概率显......
  • 【因果推断】【Introduction to Causal Inference from a Machine Learning Perspecti
    第一章动机:为什么你可能关心1.1辛普森悖论考虑一个纯粹假设的未来,有一种被称为COVID-27的新疾病在人类中流行。在这个纯粹假设的未来,有两种治疗方法已经被开发出来:治疗A和治疗B。治疗B比治疗A更稀缺,因此目前接受治疗A和治疗B的比例大致为73%/27%。在一个只关心最大限度......
  • Q15 LeetCode54 螺旋矩阵
    1.和上一题主体部分一模一样,加了判断语句2. intm=matrix.length,n=matrix[0].length;二维数组的长度3.List得实例化  1classSolution{2publicList<Integer>spiralOrder(int[][]matrix){34List<Integer>ans=newArrayList<>(......
  • Q14 LeetCode59 螺旋矩阵
    1.二维数组声明  int[][]ans=newint[n][n];2. left<=right&&top<=bottom 跳出循环条件 1classSolution{2publicint[][]generateMatrix(intn){3int[][]ans=newint[n][n];4intnum=1;5inttop=0,bottom=n-1,left......
  • Q13 LeetCode76 最小覆盖子串
    1.难题2.need.containsKey(r)看hashmap中是否含有r3.明天再复盘一遍  1classSolution{2publicStringminWindow(Strings,Stringt){3if(s==null||s.isEmpty()||t==null||t.isEmpty()||s.length()<t.length())return"";4......