题解 | 至少有 K 个重复字符的最长子串

至少有 K 个重复字符的最长子串

https://www.nowcoder.com/practice/5aabbcfc45e2443ab7b8c9988bca6616

package main

import (
	"strings"
)

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @param k int整型
 * @return int整型
 */

func longestSubstring( s string ,  k int ) int {
    counter := make(map[rune]int, len(s))
    for _,c := range s{
        counter[c]++
    }
    
    for _,c:=range s{
        if counter[c]<k{
            maxCount := -1
            for _,newS := range strings.Split(s,string(c)){
               count := longestSubstring(newS, k)
               if count>maxCount{
                maxCount = count
               }
            }
            return maxCount
        }
    }
    return len(s)
    
}

这题最难的地方在题意的理解上,子串是连续的字符的意思,而字符的构成可能并不是连续的,比如ababa k为2的话应该是5,k为3的话应该是0.所以按照不满足k的字符作为分隔符去分割就好了,然后看子串是否需要再次分割

1.统计当前不满足k的字符有哪些

2.按照第一个不满足的字符进行分割

3.重复1直到当前的子串中全是大于等于k的字符

全部评论

相关推荐

smile丶snow:空间可以优化下,基本都是一张a4纸的pdf。第二个项目感觉缺一个背景。就是你为什么要写这个东西。因为网站xx性能问题所以写了这个可以编一个。可以只要自我评价的内容,专业技能的感觉可以删掉。然后技能证书也可以去掉。在自我评价加一个英语能力就行了。个人建议哈
简历被挂麻了,求建议
点赞 评论 收藏
分享
04-10 18:55
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务