news 2026/6/10 23:18:00

华为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/6/10 14:10:52

【开题答辩全过程】以 高校跨校选课系统为例,包含答辩的问题和答案

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

作者头像 李华
网站建设 2026/6/10 15:24:26

Linux设备节点与平台总线-设备树

前提 前面的分析中我们知道,设备树文件最初的目的就是为了代替平台总线中的platform中的device的部份,那么设备树的dts 文件就必须在内核其中后传递给内核,那设备树是如何传递给内核? 编译流程 编译:DTC工具将dts 设备树文本文件编译为二进制dtb文件这种二进制文件是…

作者头像 李华
网站建设 2026/6/10 14:11:25

终极效率神器:一键实现代码与设计的完美融合

终极效率神器&#xff1a;一键实现代码与设计的完美融合 【免费下载链接】figma-html Builder.io for Figma: AI generation, export to code, import from web 项目地址: https://gitcode.com/gh_mirrors/fi/figma-html 还在为网页设计与前端开发之间的鸿沟而烦恼吗&am…

作者头像 李华
网站建设 2026/6/10 19:44:06

2025最新!自考必备8个AI论文工具测评与推荐

2025最新&#xff01;自考必备8个AI论文工具测评与推荐 2025年自考论文写作工具测评&#xff1a;高效提效的智能助手 随着人工智能技术的不断进步&#xff0c;越来越多的自考生开始借助AI工具提升论文写作效率。然而&#xff0c;面对市场上琳琅满目的论文辅助软件&#xff0c;如…

作者头像 李华