2026/3/6 7:48:36
网站建设
项目流程
福田企业网站优化方案,重庆建设人才网站,做网站 人工智能,如何在百度推广自己的产品分割均衡字符串 2025华为OD机试 - 华为OD上机考试 100分题型 华为OD机试真题目录点击查看: 华为OD机试真题题库目录#xff5c;机考题库 算法考点详解
题目描述
均衡串定义#xff1a;字符串中只包含两种字符#xff0c;且这两种字符的个数相同。
给定一个均衡字符串机考题库 算法考点详解题目描述均衡串定义字符串中只包含两种字符且这两种字符的个数相同。给定一个均衡字符串请给出可分割成新的均衡子串的最大个数。约定字符串中只包含大写的 X 和 Y 两种字符。输入描述输入一个均衡串。字符串的长度[2 10000]。给定的字符串均为均衡字符串输出描述输出可分割成新的均衡子串的最大个数。备注分割后的子串是原字符串的连续子串用例1输入XXYYXY输出2说明XXYYXY可分割为2个均衡子串分别为XXYY、XY题解思路:逻辑分析题目保证输入的是均衡字符串并且要求分割之后均衡字符串最大需要分析出一个原理一个均衡字符串左边是均衡字符串的情况下右边部分肯定也是均衡字符串。明白1的原理之后只需要从前往后遍历输入字符串当X的数量 Y的数量进行一次切割均衡子串结果1.然后输出得到的切割次数即可。c#includeiostream #includevector #includestring #include utility #include sstream #includealgorithm #includecmath #includemap using namespace std; int main() { string input; getline(cin, input); int res 0; // 记录xy分别出现次数 vectorint 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; }JAVAimport 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 表示 X1 表示 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); } }Pythonimportsys input_strsys.stdin.readline().strip()res0# 记录 X、Y 分别出现的次数count[0,0]forcininput_str:count[ord(c)-ord(X)]1# 达到均衡可以切割一次ifcount[0]count[1]:res1print(res)JavaScript// 使用 readline 读取标准输入ACM 模式constreadlinerequire(readline);constrlreadline.createInterface({input:process.stdin,output:process.stdout});letinput;rl.on(line,line{inputline.trim();});rl.on(close,(){letres0;// 记录 X、Y 分别出现的次数letcount[0,0];for(constcofinput){count[c.charCodeAt(0)-X.charCodeAt(0)];// 达到均衡可以切割一次if(count[0]count[1]){res;}}console.log(res);});Gopackagemainimport(bufiofmtos)funcmain(){in:bufio.NewReader(os.Stdin)varinputstringfmt.Fscanln(in,input)res:0// 记录 X、Y 分别出现的次数count:make([]int,2)fori:0;ilen(input);i{c:input[i]count[c-X]// 达到均衡可以切割一次ifcount[0]count[1]{res}}fmt.Println(res)}