蓝桥杯 java 重复字符串

这篇具有很好参考价值的文章主要介绍了蓝桥杯 java 重复字符串。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述
* 如果一个字符串S恰好可以由某个字符串重复K次得到,我们就称S是K次重复字符串。
* 例如 abcabcabc 可以看作是 abc重复3次得到,所以 abcabcabc 是3次重复字符串。
* 同理 aaaaaa 既是2次重复字符串、又是3次重复字符串和6次重复字符串。
* 现在给定一个字符串S,请你计算最少要修改其中几个字符可以使S变为一个K次字符串?
* 无法修改成重复字符串就输出 -1
* 思路:
* 1:如果出现了无法修改就输出-1这种题 我们就先思考怎样会无解
* -- 那什么情况下会无解?
* --如果字符串s是k次字符串 那么s的长度就肯定是k的倍数
* --如果不是倍数 那就无解

* 2:怎样才能是操作最少次?
* --寻找出现次数最多的字符 然后把其他字符全部变为出现次数最多的字符
* --比如有字符串:abcdabcdabcd  是三次字符串
* --那么第一个字符肯定就和第四个字符相同
* --那么第二个字符肯定就和第六个字符相同
* --类推
* --第一个字符串 和 1+k个字符 和1+2k个字符都要一样
* --第二个字符串 和 2+k个字符 和2+2k个字符都要一样
* --类推

* 列题:比如:a b c a b c c c a 我怎么变?
* --找到出现次数最多的字符然后把其他的都变为出现最多的字符
* --这里如果变c 就只操作五次 变其他的 操作的次数就更多
package LqJava._课程代练.第三章.test6;

import java.util.Arrays;
import java.util.Scanner;

public class 重复字符串 {
    static int[] cnt = new int[26];

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 是k次字符串
        int k = sc.nextInt();
        // 字符
        char[] s = sc.next().toCharArray();
        // 字符长度
        int n = s.length;

        // 无解的情况
        if (n % k != 0) {
            System.out.println(-1);
            return;
        }

        // 以第一个字符串 和 1+k个字符 和1+2k个字符都要一样
        // 我们会分为几组?是不是就是k组
        // 第一组就是下标0开始 第二组1 类推到最后一组就是k-1


        // 每一组内有t个元素
        int t = n / k;
        int ans = 0;
        // 1:枚举开头
        for (int i = 0; i < k; i++) {
            // cnt是全局变量 每一组要把它清空
            Arrays.fill(cnt,0);
            // 枚举组内所有的元素
            //  2:存元素记录大小第一个元素从第一组开始 j=i j<字符串长度 j+=k 第一个元素为j 下一个元素就是j+k 所以是j+=k
            for (int j = i; j < n; j += k) {
                cnt[s[j] - 'a']++;
            }
            // 3:最多的字符出现的次数
            int max = 0;
            for (int j = 0; j < 26; j++) {
                max = Math.max(max, cnt[j]);
            }
            //
            ans += t - max;
        }
        System.out.println(ans);
    }
}

文章来源地址https://www.toymoban.com/news/detail-801899.html

到了这里,关于蓝桥杯 java 重复字符串的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 获取字符串的全排列(去除字符串中2个字符相同时造成的重复)

    一、概念 现有一个字符串,要打印出该字符串中字符的全排列。 以字符串abc为例,输出的结果为:abc、acb、bac、bca、cab、cba。 以字符串aab为例,输出的结果为:aab、aba、baa。 二、代码 致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分

    2024年04月16日
    浏览(40)
  • 蓝桥杯单片机 ——接收字符、字符串

     1定时器中断方法 (完整代码在文末!!)  2.定时的方法(推荐): 蓝桥杯单片机第十四届第三次模拟题_让我来瞅一瞅的博客-CSDN博客 定时器0——定时功能        判断接受数据是否完成  定时器1——串口功能           接受、发送数据   1.接受、发送 均为文本模式

    2023年04月17日
    浏览(42)
  • C语言实现删除字符串中重复字符的算法

    C语言实现删除字符串中重复字符的算法 问题描述: 给定一个字符串,我们需要编写一个C语言函数,以删除字符串中的重复字符。例如,对于输入字符串\\\"hello world\\\",函数应该返回\\\"hel wrd\\\"。 算法思路: 为了解决这个问题,我们可以使用一个哈希表来跟踪每个字符的出现次数。

    2024年02月04日
    浏览(46)
  • 力扣2182.构造限制重复的字符串

     思路:先记录每个字符的出现次数,构建一个新字符串,从尾取字符,每取一个该字符个数-1,若该字符已经取到有repeatLimit个,则递归取次大的字符,并对应字符个数-1,若没有次大字符了,则直接返回 代码:  

    2024年02月01日
    浏览(48)
  • python 生成随机字符串(大小写英文字母、数字组成)、生成随机的无重复字符的字符串

    生成随机的 字符串 以下例子中,生成随机的字符串(大小写英文字母、数字组成)。 生成随机的无重复字符的字符串 以下例子中,生成随机的无重复字符的字符串(大小写英文字母、数字组成),但其长度不能超过样本总长。   random 模块 random.choice(seq) 从非空序列 seq 中随

    2024年02月04日
    浏览(71)
  • 【每日一题】构造限制重复的字符串

    【贪心】【字符串】【2024-01-13】 2182. 构造限制重复的字符串 思路 解题思想比较简单,利用贪心思想,每次选择当前剩余字符串中字典序最大的字符加到答案字符串末尾,如果答案字符串末尾的字符已经连续出现了 repeatLimit 次,则将字典序次大的字符加到答案字符串,随后

    2024年01月22日
    浏览(44)
  • 力扣_字符串10—重复的DNA序列

    DNA序列 由一系列核苷酸组成,缩写为 ‘A’, ‘C’, ‘G’ 和 ‘T’.。 例如,“ACGAATTCCG” 是一个 DNA序列 。 在研究 DNA 时,识别 DNA 中的重复序列非常有用。 给定一个表示 DNA序列 的字符串 s ,返回所有在 DNA 分子中 出现不止一次 的 长度为 10 的序列(子字符串)。你可以按 任

    2024年02月19日
    浏览(31)
  • 【蓝桥杯算法题】字符串匹配算法

    这段代码实现了一个过滤字符串中非字母字符的功能,并统计字母个数。 首先,在主函数中,定义一个长度为100的字符数组str,用fgets函数从标准输入获取用户输入的字符串。 然后调用filterLetters函数,利用指针p1和p2遍历字符串中的每个字符,判断是否为字母字符, 若是,则

    2024年02月08日
    浏览(49)
  • (蓝桥杯每日一题)字符串排序

    本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝要把一个字符串中的字母按其在字母表中的顺序排列 例如,LANQIAO 排列后为AAILNOQ 又如, GOODGOODSTUDYDAYDAYUP 排后为AADDDDDGGOOOOPSTUUYYY 请问对于以下字符串,排列之后字符串是什么? WHERETHEREISA

    2024年01月21日
    浏览(41)
  • 算法:删除字符串中的所有相邻重复项

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、问题描述 二、栈解法 三、双指针解法 总结 提示:以下是本篇文章正文内容,下面案例可供参考 给出由小写字母组成的字符串str,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

    2024年01月22日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包