首页 > 其他分享 >剑指Offer 48. 最长不含重复字符的子字符串

剑指Offer 48. 最长不含重复字符的子字符串

时间:2023-09-08 10:12:39浏览次数:45  
标签:字符 return 48 Offer int res ++ 字符串

题目链接: 剑指Offer 48. 最长不含重复字符的子字符串

题目描述:

请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。

解法思路:

代码:

func lengthOfLongestSubstring(s string) int {
    var res int
    if s == ""{
        return res
    }
    //双指针算法,j指针从前往后移动,表示以j为结尾的子串,
    //i 也从前往后移动
    n := len(s)
    m := make(map[byte]int,n)
    for i,j:=0,0;j < n;j++{
        m[s[j]]++
        if m[s[j]] > 1 {  //说明当前字符前面出现过,因此要找到前面出现的位置,
            for m[s[i]] == 1{ //对于前面只出现一次的字符,跳过
                m[s[i]]-- 
                i++
            }
            //for循环结束后,此时 i 指针指向的就是上面重复的字符
            m[s[i]]--  //出现数量减 1
            i++  //i 向后移动一位
        }
        res = max(res,j-i+1)
    }
    return res
}
func max(a,b int)int{
    if a > b {
        return a
    }
    return b
}

标签:字符,return,48,Offer,int,res,++,字符串
From: https://www.cnblogs.com/lxing-go/p/17686760.html

相关文章

  • P8481 Binary search
    题目传送门思路提供由于题目中询问的是最小需要的查找次数,但是正常的二分查找是不满足我们这道题目的(标准的二分是自定义向下取整,但是没有考虑向上取整的情况),但是只要我们便利出每一种情况(即向上取整和向下取整)就可以了,而DFS作为一种暴力的算法,就能够有效的便利全部情况,这样的......
  • P8482 Number
    题目传送门思路提供首先我们可以从题目给出的部分分入手,先拿到$50$分,这个我们可以通过贪心的手段保证两个数字的总和相同(因为只要保持相同就可以使得两个数的乘积最大),所以每次将数字加在总分较少的字符串上就可以保证两个字符串表示的数字的乘积最大,如果出现两个两个字符串......
  • 剑指 Offer 60. n个骰子的点数
    把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第i个元素代表这n个骰子所能掷出的点数集合中第i小的那个的概率。 示例1:输入:1输出:[0.16667,0.16667,0.16667,0.16667,0.16667,0.16667......
  • 剑指 Offer 60. n个骰子的点数
    把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。 你需要用一个浮点数数组返回答案,其中第i个元素代表这n个骰子所能掷出的点数集合中第i小的那个的概率。 示例1:输入:1输出:[0.16667,0.16667,0.16667,0.16667,0.16667,0.16667......
  • 2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在
    2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务他喜欢R字符,因为在某些任务中,这个字符通常表示“正确”的结果另一方面,他不喜欢B字符,因为在某些任务中,这个字符通常表示“错误”的结果为了解决他的任务,塔子哥定义了字符串的权值为字符串中R字符的出现次数例如,......
  • Go语言反单引号创建原始字符串raw_string
    在Go语言中,反引号(`)用于创建原始字符串字面量(rawstringliterals)。原始字符串字面量是不包含转义序列的字符串,其中的内容会保持原样,包括换行符和特殊字符。反引号的主要用途之一是编写多行的文本或正则表达式,而不需要使用转义字符。这在处理包含大量特殊字符或格式化要求的文本......
  • 2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务 他喜欢 R 字符,因为在
    2023-09-07:用go语言编写。塔子哥最近在处理一些字符串相关的任务他喜欢R字符,因为在某些任务中,这个字符通常表示“正确”的结果另一方面,他不喜欢B字符,因为在某些任务中,这个字符通常表示“错误”的结果为了解决他的任务,塔子哥定义了字符串的权值为字符串中R字符的出现次数......
  • 代码随想录个人笔记——字符串篇
    344.反转字符串 题目链接#include<bits/stdc++.h>usingnamespacestd;classSolution{public:voidreverseString(vector<char>&s){intlen=s.size();for(inti=0,j=len-1;i<j;i++,j--){//第一种//i......
  • 字符串匹配算法
    #include<stdio.h>#defineMaxSize100//定义typedefstruct{charch[MaxSize];intlength;}SString;//朴素模式匹配算法,主串S,辅串T,最坏时间复杂度:O(mn)intIndex(SStringS,SStringT){inti=1,j=1;while(i<=S.length&&j<=T.length){......
  • 剑指 Offer 22. 链表中倒数第k个节点
    输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表:1->2->3->4->5,和k=......