news 2026/2/3 4:56:24

华为OD机试真题 -【分割均衡字符串】 (C++ Python JAVA JS GO)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
华为OD机试真题 -【分割均衡字符串】 (C++ Python JAVA JS GO)

分割均衡字符串

2025华为OD机试 - 华为OD上机考试 100分题型

华为OD机试真题目录点击查看: 华为OD机试真题题库目录|机考题库 + 算法考点详解

题目描述

均衡串定义:字符串中只包含两种字符,且这两种字符的个数相同。

给定一个均衡字符串,请给出可分割成新的均衡子串的最大个数。

约定:字符串中只包含大写的 X 和 Y 两种字符。

输入描述

输入一个均衡串。

  • 字符串的长度:[2, 10000]。
  • 给定的字符串均为均衡字符串

输出描述

输出可分割成新的均衡子串的最大个数。

备注

分割后的子串,是原字符串的连续子串

用例1

输入

XXYYXY

输出

2

说明

XXYYXY可分割为2个均衡子串,分别为:XXYY、XY

题解

思路:逻辑分析

  1. 题目保证输入的是均衡字符串并且要求分割之后均衡字符串最大,需要分析出一个原理一个均衡字符串,左边是均衡字符串的情况下,右边部分肯定也是均衡字符串
  2. 明白1的原理之后,只需要从前往后遍历输入字符串,当X的数量 == Y的数量进行一次切割,均衡子串结果+1.
  3. 然后输出得到的切割次数即可。

c++

#include<iostream> #include<vector> #include<string> #include <utility> #include <sstream> #include<algorithm> #include<cmath> #include<map> using namespace std; int main() { string input; getline(cin, input); int res = 0; // 记录xy分别出现次数 vector<int> count(2, 0); for (int i = 0; i < input.size(); i++) { char c = input[i]; count[c - 'X']++; // 达到均衡可以切割一次 if (count[0] == count[1]) { res++; } } cout << res; return 0; }

JAVA

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String input = br.readLine(); int res = 0; // 记录 X、Y 分别出现的次数,下标 0 表示 X,1 表示 Y int[] count = new int[2]; for (int i = 0; i < input.length(); i++) { char c = input.charAt(i); count[c - 'X']++; // 达到均衡(X 和 Y 数量相等)即可切割一次 if (count[0] == count[1]) { res++; } } System.out.println(res); } }

Python

importsys input_str=sys.stdin.readline().strip()res=0# 记录 X、Y 分别出现的次数count=[0,0]forcininput_str:count[ord(c)-ord('X')]+=1# 达到均衡可以切割一次ifcount[0]==count[1]:res+=1print(res)

JavaScript

// 使用 readline 读取标准输入(ACM 模式)constreadline=require('readline');constrl=readline.createInterface({input:process.stdin,output:process.stdout});letinput='';rl.on('line',line=>{input=line.trim();});rl.on('close',()=>{letres=0;// 记录 X、Y 分别出现的次数letcount=[0,0];for(constcofinput){count[c.charCodeAt(0)-'X'.charCodeAt(0)]++;// 达到均衡可以切割一次if(count[0]===count[1]){res++;}}console.log(res);});

Go

packagemainimport("bufio""fmt""os")funcmain(){in:=bufio.NewReader(os.Stdin)varinputstringfmt.Fscanln(in,&input)res:=0// 记录 X、Y 分别出现的次数count:=make([]int,2)fori:=0;i<len(input);i++{c:=input[i]count[c-'X']++// 达到均衡可以切割一次ifcount[0]==count[1]{res++}}fmt.Println(res)}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/30 14:03:55

Java毕设选题推荐:基于springboot+vue的传统文化交流交易平台基于springboot+vue传统文化宣传系统【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/1/29 18:23:10

【开题答辩全过程】以 基于springboot的社区团购小程序设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/1/31 3:55:58

三菱PLC与组态王搭建污水处理系统:探索自动化控制的魅力

No.970 三菱PLC和组态王组态污水处理系统在工业自动化领域&#xff0c;污水处理系统的高效运行至关重要。今天咱就唠唠如何用三菱PLC和组态王来打造一个污水处理系统&#xff0c;绝对是干货满满。 三菱PLC&#xff1a;污水处理的“智慧大脑” 三菱PLC作为一款广泛应用的可编程逻…

作者头像 李华
网站建设 2026/1/29 19:58:09

基于双层优化的电动汽车优化调度MATLAB代码探秘

MATLAB代码&#xff1a;基于双层优化的电动汽车优化调度研究 关键词&#xff1a;双层优化 选址定容 输配协同 时空优化 参考文档&#xff1a;《考虑大规模电动汽车接入电网的双层优化调度策略_胡文平》中文版 《A bi-layer optimization based temporal and spatial sched…

作者头像 李华
网站建设 2026/1/31 23:21:42

如何从单张图像中估计深度

原文&#xff1a;towardsdatascience.com/how-to-estimate-depth-from-a-single-image-7f421d86b22d?sourcecollection_archive---------0-----------------------#2024-01-25 使用 Hugging Face 和 FiftyOne 运行并评估单目深度估计模型 https://medium.com/jacob_marks?so…

作者头像 李华