美文网首页
教3妹学编程:周竞赛-6078. 重排字符形成目标字符串

教3妹学编程:周竞赛-6078. 重排字符形成目标字符串

作者: 程序员小2 | 来源:发表于2022-05-29 10:51 被阅读0次

    插: 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
    坚持不懈,越努力越幸运,大家一起学习鸭~~~

    给你两个下标从 0 开始的字符串 s 和 target 。你可以从 s 取出一些字符并将其重排,得到若干新的字符串。

    从 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本数。

    示例 1:

    输入:s = "ilovecodingonleetcode", target = "code"
    输出:2
    解释:
    对于 "code" 的第 1 个副本,选取下标为 4 、5 、6 和 7 的字符。
    对于 "code" 的第 2 个副本,选取下标为 17 、18 、19 和 20 的字符。
    形成的字符串分别是 "ecod" 和 "code" ,都可以重排为 "code" 。
    可以形成最多 2 个 "code" 的副本,所以返回 2 。
    示例 2:

    输入:s = "abcba", target = "abc"
    输出:1
    解释:
    选取下标为 0 、1 和 2 的字符,可以形成 "abc" 的 1 个副本。
    可以形成最多 1 个 "abc" 的副本,所以返回 1 。
    注意,尽管下标 3 和 4 分别有额外的 'a' 和 'b' ,但不能重用下标 2 处的 'c' ,所以无法形成 "abc" 的第 2 个副本。
    示例 3:

    输入:s = "abbaccaddaeea", target = "aaaaa"
    输出:1
    解释:
    选取下标为 0 、3 、6 、9 和 12 的字符,可以形成 "aaaaa" 的 1 个副本。
    可以形成最多 1 个 "aaaaa" 的副本,所以返回 1 。

    提示:

    1 <= s.length <= 100
    1 <= target.length <= 10
    s 和 target 由小写英文字母组成

    java代码:

    class Solution {
        public int rearrangeCharacters(String s, String target) {
    
            int[] ch = new int[26];
            for (int i = 0; i < s.length(); i++) {
                ch[s.charAt(i) - 'a']++;
            }
    
            int res = 0;
            char[] t = target.toCharArray();
            while (true) {
                for (char c : t) {
                    ch[c - 'a']--;
                    if (ch[c - 'a'] < 0) {
                        return res;
                    }
                }
                res++;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:教3妹学编程:周竞赛-6078. 重排字符形成目标字符串

          本文链接:https://www.haomeiwen.com/subject/wsjgprtx.html