Codeforces - 1105B. Zuhair and Strings 字符串模拟

发布于 2024-09-19 07:33:25 字数 1808 浏览 6 评论 0

题目

给你一个字符串有 n 个字符,给你一个 k 。要你求字符串的等级。

字符串的等级定义为:

  • 等级定义为字符串中最大的连续片段的次数;
  • 而连续片段就是当有 k 个连续相同的字符的时候,这个字符的连续片段数就 +1

解析

思路:

  • 遍历字符串,每次看当前字符和前一个字符是否相同,如果相同就累加一个 cnt 遍历,表示当前的相同的数目;
  • 如果不同,记得重新置 cnt = 1
  • 然后判断当前 cnt == k ,如果已经达到 k ,就累加这个字符的等级;
  • 最终结果就是在所有的字符的等级中取一个最大的即可;
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args){
        Scanner in = new Scanner(new BufferedInputStream(System.in));
        PrintStream out = System.out;
        int n = in.nextInt();
        int k = in.nextInt();
        char[] chs = in.next().toCharArray();
        int[] counts = new int[53];
        if(k == 1)
            counts[chs[0] - 'a']++;
        int cnt = 1;
        for(int i = 1 ; i < n; i++){ 
            if(k == 1){ 
                counts[chs[i] - 'a']++;
                continue;
            }
            if(chs[i] == chs[i-1]){ 
                cnt++;
                if(k == cnt){ 
                    counts[chs[i] - 'a']++;
                    chs[i] = '#';  // to be a special character
                    cnt = 1;
                }
            }else // remember this when not consecutive
                cnt = 1;
        }
        long res = 0;
        for(int count : counts) 
            res = Math.max(res, count);
        out.println(res);
    }   
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

樱花细雨

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文