华为OD刷题C卷 - 每日刷题30(小明找位置,分隔均衡字符串)

2024-06-16 01:52

本文主要是介绍华为OD刷题C卷 - 每日刷题30(小明找位置,分隔均衡字符串),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、(小明找位置):

这段代码是解决“小明找位置”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于帮助小明快速找到他在排队中应该站的位置。

main方法首先读取已排列好的小朋友的学号数组和小明的学号,然后调用getResult方法并打印小明应该站的位置。

getResult方法使用Java的Arrays.binarySearch方法进行二分查找,以确定小明学号在已排序数组中的位置。如果小明的学号不在数组中,binarySearch方法将返回插入点的负索引,代码将其转换为正索引,并加1以符合题目要求的从1开始的序列。

2、(分隔均衡字符串):

这段代码是解决“分隔均衡字符串”的问题。它提供了一个Java类Main,其中包含main方法,用于计算给定均衡字符串可以分割成的新的均衡子串的最大个数。

main方法首先读取输入的均衡字符串,然后初始化计数器countX和countY来记录字符’X’和’Y’的数量。通过遍历字符串,每遇到字符’X’或’Y’,更新相应的计数器。当两种字符的计数相等时,表示找到了一个新的均衡子串,增加结果计数器ans。

最后,打印出可以分割成的新的均衡子串的最大个数。

package OD355;import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;/*** @description 小明找位置* @level 4* @score 100*//*** 题目描述* 小朋友出操,按学号从小到大排成一列;* <p>* 小明来迟了,请你给小明出个主意,让他尽快找到他应该排的位置。* <p>* 算法复杂度要求不高于nLog(n);学号为整数类型,队列规模 ≤ 10000;* <p>* 输入描述* 第一行:输入已排成队列的小朋友的学号(正整数),以","隔开;例如:* <p>* 93,95,97,100,102,123,155* <p>* 第二行:小明学号,如:* <p>* 110* <p>* 输出描述* 输出一个数字,代表队列位置(从1开始)。例如:* <p>* 6*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//已排列好的小朋友学号 从小到大int[] arr = Arrays.stream(sc.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();//小明学号int n = sc.nextInt();System.out.println(getResult(arr, n));}//找到小明应该站的位置 序列从1开始public static int getResult(int[] arr, int n) {//二分法,从中间开始站int index = Arrays.binarySearch(arr, n);if (index < 0) {index = -index - 1;}return index + 1;}
}
package OD356;import java.util.Scanner;/*** @description 分隔均衡字符串* @level 4* @score 100*//*** 题目描述* 均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。* <p>* 给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。* <p>* 约定:字符串中只包含大写的 X 和 Y 两种字符。* <p>* 输入描述* 输入一个均衡串。* <p>* 字符串的长度:[2, 10000]。* 给定的字符串均为均衡字符串* 输出描述* 输出可分割成新的均衡子串的最大个数。* <p>* 备注* 分割后的子串,是原字符串的连续子串*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//原始均衡串 X Y个数相同String str = sc.nextLine();int countX = 0;int countY = 0;//可分割的最多子均衡串 每遇到一次XY数量相等,就是一个子均衡串int ans = 0;for (int i = 0; i < str.length(); i++) {if (str.charAt(i) == 'X') {countX++;} else {countY++;}if (countX == countY) {ans++;}}System.out.println(ans);}
}

这篇关于华为OD刷题C卷 - 每日刷题30(小明找位置,分隔均衡字符串)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065188

相关文章

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

华为鸿蒙HarmonyOS 5.1官宣7月开启升级! 首批支持名单公布

《华为鸿蒙HarmonyOS5.1官宣7月开启升级!首批支持名单公布》在刚刚结束的华为Pura80系列及全场景新品发布会上,除了众多新品的发布,还有一个消息也点燃了所有鸿蒙用户的期待,那就是Ha... 在今日的华为 Pura 80 系列及全场景新品发布会上,华为宣布鸿蒙 HarmonyOS 5.1 将于 7

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

PyCharm如何更改缓存位置

《PyCharm如何更改缓存位置》:本文主要介绍PyCharm如何更改缓存位置的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录PyCharm更改缓存位置1.打开PyCharm的安装编程目录2.将config、sjsystem、plugins和log的路径

golang float和科学计数法转字符串的实现方式

《golangfloat和科学计数法转字符串的实现方式》:本文主要介绍golangfloat和科学计数法转字符串的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望... 目录golang float和科学计数法转字符串需要对float转字符串做处理总结golang float

Python如何判断字符串中是否包含特殊字符并替换

《Python如何判断字符串中是否包含特殊字符并替换》这篇文章主要为大家详细介绍了如何使用Python实现判断字符串中是否包含特殊字符并使用空字符串替换掉,文中的示例代码讲解详细,感兴趣的小伙伴可以了... 目录python判断字符串中是否包含特殊字符方法一:使用正则表达式方法二:手动检查特定字符Pytho

MySQL 字符串截取函数及用法详解

《MySQL字符串截取函数及用法详解》在MySQL中,字符串截取是常见的操作,主要用于从字符串中提取特定部分,MySQL提供了多种函数来实现这一功能,包括LEFT()、RIGHT()、SUBST... 目录mysql 字符串截取函数详解RIGHT(str, length):从右侧截取指定长度的字符SUBST

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Java如何用乘号来重复字符串的功能

《Java如何用乘号来重复字符串的功能》:本文主要介绍Java使用乘号来重复字符串的功能,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java乘号来重复字符串的功能1、利用循环2、使用StringBuilder3、采用 Java 11 引入的String.rep