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

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

时间:2023-08-25 20:55:42浏览次数:37  
标签:字符 48 map int Offer 字符串

题目:

class Solution {      //本题采用双指针滑动窗口的方法
public:
    int lengthOfLongestSubstring(string s) {
        map<char, int> m;      //map里面存放的是**每个字符对应的下一个索引**
        int result, l=0, r=0;
        while(r<s.size()){
            if(m.find(s[r])!=m.end()){      //若该字符已经出现,左指针直接跳到窗口中重复字符的下一位。相当于重新开始计算长度
                l = max(l, m[s[r]]);      //这里max判断不可缺少,因为l指针有可能会比m[s[r]]大,这时候需要l指针不动
            }
            m[s[r]] = r+1;      //存放当前字符的下一个索引
            result = max(result, r-l+1);
            r++;
        }
        return result;
    }
};

标签:字符,48,map,int,Offer,字符串
From: https://www.cnblogs.com/fly-smart/p/17657902.html

相关文章

  • Golang字符串拼接性能测试
    packagemytestimport( "bytes" "fmt" "strconv" "strings" "testing")constNUMBERS=10000funcBenchmarkStringSprintf(b*testing.B){ b.ResetTimer() fori:=0;i<b.N;i++{ varstrstri......
  • P7 UVA11481 Arrange the Numbers
    UVA11481ArrangetheNumbers组合数问题。做法貌似很多,显然在前\(m\)个数中选\(k\)个,即\(C(m,k)\),然后后面有\(m-k\)个数需要保证不放在自己的位置上,所以后面整体是一个禁位问题,貌似可以用棋盘多项式去推禁位公式,但是暂时不会。不过还有另外一种思路,就是对于后面的\(n-......
  • 力扣---1448. 统计二叉树中好节点的数目
    给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X定义为:从根到该节点X所经过的节点中,没有任何节点的值大于X的值。 示例1:输入:root=[3,1,4,3,null,1,5]输出:4解释:图中蓝色节点为好节点。根节点(3)永远是个好节点。节点4->(3,4)是路......
  • 逆置字符串允许有空格和. 如I like China.->China. like I
    voidreverse(char*left,char*right){ while(left<right) { inttmp=*left; *left=*right; *right=tmp; left++; right--; }}intmain(){ chararr[101]={0}; gets_s(arr); intlen=strlen(arr);//求字符串长度 //逆置整个字符串 reverse(......
  • 剑指 Offer 46. 把数字翻译成字符串(中等)
    题目:classSolution{//本题只需要返回不同翻译方法的数量,不需要列出所有翻译结果,所以可以采用以下递归方法public:inttranslateNum(intnum){if(num<10)return1;//当num小于10,说明找到一种翻译方法return(num%100<10||num%100>......
  • 【lc】415 字符串相加
    链接https://leetcode.cn/problems/add-strings/description/分析大数相加而已,倒着遍历,然后相加就好了。代码classSolution:defaddStrings(self,num1:str,num2:str)->str:num1,num2=(num1,num2)iflen(num1)>len(num2)else(num2,num1)......
  • cmake中list,set的对字符串操作
    cmake中所有的对象都是string,所以我们对这些的操作就是对字符串的操作,里面提供追加和删除的方法 CMakeLists.txtcmake_minimum_required(VERSION3.15)project(test)#方式二file(GLOBSRC${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)message("=========================")m......
  • js不区分大小写比较字符串|字符串转小写
    toLowerCase()方法用于把字符串转换为小写,在做字符串比较不区分大小写的时候用此方法,效果:代码://不区分大小写Stringstr=‘ABC’if(‘abc’==str.toLowerCase()){return“1”;//正确}else{return“0”;//错误}}toUpperCase():字符串转大写,比较同上......
  • 21.2048小游戏
    跟着教学视频来做,但是视频不完整的,还缺一部分,后面的是我自己独自完成的,嘿嘿嘿这是初步的作品,也就三百多行代码packagemyGame2048;publicclassStartGame_2048{publicstaticvoidmain(String[]args){newGameFrame_2048();}}packagemyGame2048;......
  • 【剑指Offer】64、滑动窗口的最大值
    【剑指Offer】64、滑动窗口的最大值题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,......