华为OD机试 - 分割均衡字符串(Java & JS & Python & C & C++)

题目描述:

给定一个字符串s,请按下述要求进行处理:

  1. 将字符串s进行分割,使每个子字符串的每个字符都是相同的。
  2. 在满足上述要求的情况下,分割的子字符串数量最小。
  3. 输出满足条件的最小分割数量。

输入描述:

输入一个字符串s,s的长度不超过100,且只包含小写字母。

输出描述:

输出满足条件的最小分割数量。

示例:

输入:"aabab"

输出:2

说明:可以分割为 "aa" 和 "ab"。

解决方案:




// Java代码
import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        System.out.println(solve(s));
    }
 
    public static int solve(String s) {
        int count = 0;
        char prev = s.charAt(0);
        for (int i = 1; i < s.length(); i++) {
            if (s.charAt(i) != prev) {
                count++;
                prev = s.charAt(i);
            }
        }
        return count + 1;
    }
}



// JavaScript代码
const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
 
rl.on('line', function(line) {
  console.log(solve(line));
});
 
function solve(s) {
  let count = 0;
  let prev = s[0];
  for (let i = 1; i < s.length; i++) {
    if (s[i] !== prev) {
      count++;
      prev = s[i];
    }
  }
  return count + 1;
}



# Python代码
def solve(s):
    count = 0
    prev = s[0]
    for i in range(1, len(s)):
        if s[i] != prev:
            count += 1
            prev = s[i]
    return count + 1
 
s = input()
print(solve(s))



// C代码
#include <stdio.h>
#include <string.h>
 
int solve(char *s) {
    int count = 0;
    char prev = s[0];
    for (int i = 1; i < strlen(s); i++) {
        if (s[i] != prev) {
            count++;
            prev = s[i];
        }
    }
    return count + 1;
}
 
int main() {
    char s[101];
    gets(s);
    printf("%d\n", solve(s));
    return 0;
}



// C++代码
#include <iostream>
#include <string>
 
using namespace std;
 
int solve(string s) {
    int count = 0;
    char prev = s[0];
    for (int i = 1; i < s.length(); i++) {
        if (s[i] != prev) {
            count++;
            prev = s[i];
        }
    }
    return count + 1;
}
 
int main() {
    string s;
    getline(cin, s);
    cout << solve(s) << endl;
    return 0;
}

这些代码实例展示了如何接收用户输入的字符串,然后通过遍历字符串并比较相邻字符来找出需要的分割数量,最后输出这个分割数量。这些解决方案都遵循了题目的要求,并且都使用了

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日