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

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

时间:2024-06-16 12:03:10浏览次数:10  
标签:子串 小明 OD int 30 均衡 字符串 main 刷题

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,int,30,均衡,字符串,main,刷题
From: https://blog.csdn.net/2401_84585615/article/details/139595385

相关文章

  • Android Media Framework(五)Tunnel Mode
    本篇将聚焦AndroidTunnelMode,详细解析组件之间隧道连接过程、数据传递过程、组件销毁过程。通过阅读本篇内容,我们应能对tunneled组件的连接过程和buffer分配过程有所了解。1、TunnelMode介绍ILSpec详细描述了TunnelComponent的实现方式,但内容较为晦涩难懂,网上相关......
  • 华为余承东:全场景代码智能生成工具CodeArts snap正式发布,码力遥遥领先
    野心让人勤奋节制让人枯萎   前几天的端午节,华为发布了新一代代码智能生成工具codeartssnap。可以一键生成高效代码,精准解决技术难题,让你像技术大牛一样轻松完成业务开发。  下面来看看它是如何码力全开的。 第一个,通过注释一键生成代码如下,当你写好代码的注......
  • 【LeetCode最详尽解答】11-盛最多水的容器 Container-With-Most-Water
    欢迎收藏Star我的MachineLearningBlog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star,有问题可以随时与我交流,谢谢大家!链接:11-盛最多水的容器直觉这个问题可以通过可视化图表来理解和解决。通过图形化这个问题,可以简化解决过程。......
  • 【LeetCode最详尽解答】15-三数之和 3sum
    欢迎收藏Star我的MachineLearningBlog:https://github.com/purepisces/Wenqing-Machine_Learning_Blog。如果收藏star,有问题可以随时与我交流,谢谢大家!链接:15-三数之和直觉示例:输入:nums=[-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解释:nums[......
  • 【TensorFlow深度学习】使用Horovod加速TensorFlow分布式训练
    使用Horovod加速TensorFlow分布式训练使用Horovod加速TensorFlow分布式训练:并行计算的高效实践Horovod简介安装与环境准备示例代码结构性能优化建议结语使用Horovod加速TensorFlow分布式训练:并行计算的高效实践在深度学习领域,随着模型复杂度的日益增加,单机训练已......
  • Nature Methods | 二倍体基因组组装工具hypo-assembler
    近日,Wing-KinSung(宋永健)博士在NatureMethods发文CreatingdiploidassembliesfromNanoporeandIlluminareadswithhypo-assembler,报道其开发的基因组组装新工具hypo-assembler,该工具可以利用Nanopore和Illuminareads将二倍体基因组组装成两套单倍型。关于KinSung:作为......
  • 打卡信奥刷题(90)用Scratch图形化工具信奥P1853 [普及组] 投资的最大效益
    投资的最大效益题目背景约翰先生获得了一大笔遗产,他暂时还用不上这一笔钱,他决定进行投资以获得更大的效益。银行工作人员向他提供了多种债券,每一种债券都能在固定的投资后,提供稳定的年利息。当然,每一种债券的投资额是不同的,一般来说,投资越大,收益也越大,而且,每一年还可以根......
  • JAVA基础30连
    1重载和重写的区别重载:发生在同一个类中,方法名必须相同(同名不同参),参数类型不同,个数不同,顺序不同,方法返回值和访问修饰符可以相同也可以不同,发生在编译时。重写:发生在父子类中,方法名,参数列表必须相同,返回值范围小于等于父类,抛出的异常范围小于等于父类,访问修饰符范围大于......
  • Dynamsoft.DotNet.BarcodeReader.Bundle-10.2.1100
    DynamsoftBarcodeReaderSDK.NetEditionDynamsoftBarcodeReaderSDKenablesyoutoefficientlyembedbarcodereadingfunctionalityinyourweb,desktopormobileapplicationusingjustafewlinesofcode.Savingyoumonthsofaddeddevelopmenttime......
  • 蓝桥杯备考冲刺必刷题(C++) | 3791 珠宝的最大交替和
    学习C++从娃娃抓起!记录下蓝桥杯备考比赛学习过程中的题目,记录每一个瞬间。附上汇总贴:蓝桥杯备考冲刺必刷题(C++)|汇总-CSDN博客【题目描述】小莉是一位珠宝设计师,她非常喜欢玩珠子。她有一个长度为N......