前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b

2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。 输入: s = “b

作者头像
福大大架构师每日一题
发布2024-10-21 11:01:52
900
发布2024-10-21 11:01:52
举报
文章被收录于专栏:福大大架构师每日一题

2024-10-16:用go语言,找出一个字符串中每个字符最多出现两次的最长子串,并返回该子串的最大长度。

输入:s = "bcbbbcba"。

输出:4。

解释:

以下子字符串长度为 4,并且每个字符最多出现两次:"bcbbbcba"的右4个字符。

答案2024-10-16:

chatgpt

题目来自leetcode3090。

大体步骤如下:

1.字符串处理:遍历给定的字符串 "bcbbbcba",对每个字符计数,确保每个字符最多出现两次。

2.滑动窗口法:使用滑动窗口法来找出符合条件的最长子串。维护一个窗口,当窗口中的字符重复超过两次,则左边界向右移动,直到满足每个字符最多出现两次的条件。

3.更新最大长度:在窗口移动过程中,不断更新最大子串的长度。

4.返回结果:最终返回找到的最大子串的长度。

  • 总时间复杂度:整体通过一次遍历来完成,因此总时间复杂度为 O(n),其中 n 为字符串的长度。
  • 额外空间复杂度:额外使用了长度为 26 的数组用于存储字符出现次数,因此额外空间复杂度为 O(1)。

Go完整代码如下:

代码语言:javascript
复制
package main

import(
"fmt"
)

func maximumLengthSubstring(s string)(ans int){
    cnt :=[26]int{}
    left :=0
for i, b :=range s {
        b -='a'
        cnt[b]++
for cnt[b]>2{
            cnt[s[left]-'a']--
            left++
}
        ans = max(ans, i-left+1)
}
return
}

func main(){
    s :="bcbbbcba"
    fmt.Println(maximumLengthSubstring(s))
}

Rust完整代码如下:

代码语言:javascript
复制
use std::collections::HashMap;

fnmax(a:usize, b:usize)->usize{
if a > b {
        a
}else{
        b
}
}

fnmaximum_length_substring(s:&str)->usize{
letmut cnt:HashMap<char,usize>=HashMap::new();
letmut left=0;
letmut ans=0;

for(i, c)in s.chars().enumerate(){
*cnt.entry(c).or_insert(0)+=1;

while cnt[&c]>2{
*cnt.entry(s.chars().nth(left).unwrap()).or_insert(0)-=1;
            left +=1;
}

        ans =max(ans, i - left +1);
}

    ans
}

fnmain(){
lets="bcbbbcba";
println!("{}",maximum_length_substring(s));
}
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-10-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 福大大架构师每日一题 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体步骤如下:
  • Go完整代码如下:
  • Rust完整代码如下:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档