(补)4.13每日一题

给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
题目连接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/
在这里插入图片描述

解题

开始我把这个题目想简单了,我想的是输入一个字符串,从第一个开始,找到不重复的,那如果是这样,大大降低了题目的难度
那如果是这样,思路:
1.把第一个字符的给先存储在另一个数组中
2.再用第二个进行对比,不是就存储在第二个数组中
3.同时再给个循环给第二个数组进行检查,如果刚存入的字符和之前的有相同,直接strlen()-1的值
上代码:

int lengthOfLongestSubstring(char * s){
   int i=0,k=1,j=0,sum=0;
   char str[strlen(s)+1];
   *str=*s;
   for(i=0;i<strlen(s);i++)
   {
     if(*(s+i)!=*(s+i+1))
     {
         *(str+k)=*(s+i+1);
         for(j=0;j<strlen(str);j++)
         {
             if(*(str+k)==*(str+j))
             {
                 sum=strlen(str);
                 return sum;
             }
         }
         k++;
     }
     else
     {
         sum=strlen(str);
         return sum;
     }
   }
   return 0;
  }

思路上说得过去,但这个代码还是有问题,问题是内部和外部的循环的次数不匹配
解决方法就是在内部循环里面再套一个双重循环,但这样做会变得更繁琐,从程序内存和算法的角度看,就很浪费了
**至于为什么我不去改一下?**因为原来的题目就没有这么说明,是我理解错了

滑动窗口

设置左标识跟右标识,还有same(无重复时置0,有重复时置1)
此题设置两个循环,第一个循环遍历整个字符串,第二个循环遍历并判断无重复子串。
当left<right时,进行第二个for循环
令j=left,不能超过右标识right,并将same置0;
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
int lengthOfLongestSubstring(char * s){
   int i,j,max=0;
   int left=0,right=0;
   int same=0;
   int len=strlen(s);
   for(i=0;i<len;i++)
   {
       if(left<right)
       {
           same=0;
           for(j=left;j<right;j++)
           {
               if(s[j]==s[right])
               {//若有重复字符,将same置1并跳出循环;
                   same=1;
                   break;
               }
            }
            if(same==1)
            {//若有重复字符将left右移
                   left=j+1;
            }
       }
       max=max<(right-left+1)?(right-left+1):max;
       right++;//right右移继续判断
   }
   return max;
}


作者:kind-einsteinpsj

链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/solution/cyu-yan-qiu-wu-zhong-fu-zi-fu-de-zui-cha-54wk/
看到别人这个思路,我只能说我还是太年轻了
特别是最后这个right-left+1直接减去

这里还有个Python写法
先做个记录
方便学Python做一个学习

class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        # 哈希集合,记录每个字符是否出现过
        occ = set()
        n = len(s)
        # 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
        rk, ans = -1, 0
        for i in range(n):
            if i != 0:
                # 左指针向右移动一格,移除一个字符
                occ.remove(s[i - 1])
            while rk + 1 < n and s[rk + 1] not in occ:
                # 不断地移动右指针
                occ.add(s[rk + 1])
                rk += 1
            # 第 i 到 rk 个字符是一个极长的无重复字符子串
            ans = max(ans, rk - i + 1)
        return ans


作者:LeetCode-Solution

https://leetcode.cn/problems/longest-substring-without-repeating-characters/solution/wu-zhong-fu-zi-fu-de-zui-chang-zi-chuan-by-leetc-2/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/12968.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【系统集成项目管理工程师】项目整体管理

&#x1f4a5;十大知识领域&#xff1a;项目整体管理 项目整体管理包括以下 6 个过程: 制定项目章程定项目管理计划指导与管理项目工作监控项目工作实施整体变更控制结束项目或阶段过程 一、制定项目章程 制定项目章程。编写一份正式文件的过程&#xff0c;这份文件就是项目章程…

pushmall推贴共享电商2023年4月计划

Pushmall推贴共享电商2023年4月计划 2023年 二月份优化完成 1、商圈套餐卡&#xff1a;商品、优惠券、活动优化&#xff1b; 2、会员预充值一卡通&#xff1a;指定商家会员卡充值优惠&#xff1b; 3、商家海报&#xff1a;店铺海报、商品海报、商圈卡海报优化。 4、首页重新布…

MLCC周期性分析:当前时点处于周期反转前夜

MLCC是电子工业大米&#xff0c;供需波动导致行业成周期性波动 MLCC是最常用的被动元器件之一&#xff0c;终端下游涵盖消费电子、家电、汽车、通信等。在5g、汽车电子、智能硬件的推动下&#xff0c;MLCC行业需求稳步增长。供给端来看&#xff0c;中国大陆厂商合计市场份额不…

数据要素化全面提速,数据复制将迎来春天?

数据复制市场将迎来真正的春天&#xff1f; 目前看的确如此。近日&#xff0c;国家发改委密集发文&#xff0c;从产权、分配、流通、安全等多个角度解读“数据二十条”&#xff08; 《中共中央国务院关于构建数据基础制度更好发挥数据要素作用的意见》&#xff0c;简称“数据二…

Bots攻击威胁石油石化企业 瑞数动态安全实现从“人防”到“技防”

近日&#xff0c;中国石油石化企业信息技术交流大会暨油气产业数字化转型高峰论坛在京召开。本届大会由中国石油学会、中国石油、中国石化、中国海油、国家管网、国家能源、中国中化、中国航油、延长石油、中国地质调查局等单位共同主办。 作为我国石油石化行业的盛会&#xf…

什么是设计模式?

目录 常见的设计模式 创建型模式 结构型模式 行为型模式 总结 设计模式&#xff08;Design Pattern&#xff09;是一些被认为是最佳实践的面向对象编程经验的总结&#xff0c;它们提供了解决特定场景问题的可复用方案。设计模式可以加速开发过程并提高代码质量和可读性&…

GFD233A 3BHE022294R0103

GFD233A 3BHE022294R0103 ABB KUC321AE PLC模块 HIEE300698R0001 KU C321 AE01 ABB KUC711 3BHB004661R0001 高压变频模块 KUC711AE ABB KUC755AE105 3BHB005243R0105 驱动控制系统模块 KUC755 ABB KUC755AE106 3BH005243R006 控制系统模块 KU C755 AE 106 ABB LDGRB-01 3BSE01…

【C语言】基础语法1:变量和数据类型

下一篇&#xff1a;运算符和表达式 ❤️‍&#x1f525;前情提要❤️‍&#x1f525;   欢迎来到C语言基本语法教程   在本专栏结束后会将所有内容整理成思维导图&#xff08;结束换链接&#xff09;并免费提供给大家学习&#xff0c;希望大家纠错指正。本专栏将以基础出发…

知乎版ChatGPT「知海图AI」加入国产大模型乱斗,称效果与GPT-4持平

“2023知乎发现大会”上&#xff0c;知乎创始人、董事长兼CEO周源和知乎合作人、CTO李大海共同宣布了知乎与面壁智能联合发布“知海图AI”中文大模型。 周源据介绍&#xff0c;知乎与面壁智能达成深度合作&#xff0c;共同开发中文大模型产品并推进应用落地。目前&#xff0c;知…

vue 报错 error:03000086:digital envelope routines::initialization error解决方案

目录 1. 引言: 2. 更换版本出现问题: 3. 出现原因: 4. 解决办法: -> 4. 1 删了 再换回16.15版本 -> 4.2 指令修改(好使) ---> 4.2.1效果如图 -> 4.3 其他指令就别试了 压根不好使 1. 引言: npm出现问题 , 卸载后 装了个新node 18.15版本 2. 更换版本…

JavaScript【三】JavaScript中的数组

文章目录 &#x1f31f;前言&#x1f31f;数组&#x1f31f;声明&#xff1a;&#x1f31f; 隐式创建&#xff1a;&#x1f31f; 实例化构造函数&#xff1a; &#x1f31f; 注意&#xff1a;一个值为数组的长度。&#x1f31f; 访问&#xff1a;&#x1f31f; 遍历&#xff1a…

SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈(Eureka、Ribbon)

微服务技术栈导学 微服务技术是分布式架构&#xff08;把服务做拆分&#xff09;的一种 而springcloud仅仅是解决了拆分时的微服务治理的问题&#xff0c;其他更复杂的问题并没有给出解决方案 一个完整的微服务技术要包含的不仅仅是springcloud 微服务技术栈 包括什么 …

深度学习中的各种不变性

不变性 平移不变性&#xff08;Translation Invariance&#xff09;旋转不变性&#xff08;Ratation Invariance&#xff09;尺度不变性&#xff08;Size Invariance&#xff09;光照不变性&#xff08;Illumination Invariance&#xff09;仿射不变性&#xff08;Affine Invar…

springcloud2.1.0整合seata1.5.2+nacos2.10(附源码)

springcloud2.1.0整合seata1.5.2nacos2.10&#xff08;附源码&#xff09; 1.创建springboot2.2.2springcloud2.1.0的maven父子工程如下&#xff0c;不过多描述&#xff1a; 搭建过程中也出现很多问题&#xff0c;主要包括&#xff1a; 1.seataServer.properties配置文件的组…

第二部分——长难句——第一章——并列句

conjunction(and,but,if,when(while)) 想把两个句子&#xff08;多件事&#xff09;连在一块&#xff0c;就必须加上连词。 所以长难句到底是啥&#xff1f; 所以长难句&#xff08;直白表达&#xff0c;并不是语法表述&#xff09;就是几个简单句多家上几个连接词就齐活了&am…

【vue2】使用vue-admin-template动态添加路由的思路/addRoutes的使用

&#x1f609;博主&#xff1a;初映CY的前说(前端领域) ,&#x1f4d2;本文核心&#xff1a;用原生js实现省市区联动 【前言】在通用的后台管理项目的开发中&#xff0c;不仅仅是会涉及到对表单数据等的增删改查操作还会涉及到一些关于权限管理的问题。我们将基于一个RBAC的思维…

C++STL大全----容器篇(上)

&#xff08;一&#xff09;概念 STL&#xff0c;英文全称 standard template library&#xff0c;中文可译为标准模板库或者泛型库&#xff0c;其包含有大量的模板类和模板函数&#xff0c;是 C 提供的一个基础模板的集合&#xff0c;用于完成诸如输入/输出、数学计算等功能。…

2023-04-21 学习记录--C/C++-实现升序降序(冒泡法/沉底法)

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、冒泡法(沉底法) —— 升序 ⭐️ &#xff08;一&#xff09;、思路 从左到右&#xff1a; 1、第一个与第二个比较&#xff0…

RK3568平台开发系列讲解(调试篇)IS_ERR函数的使用

🚀返回专栏总目录 文章目录 一、IS_ERR函数用法二、IS_ERR函数三、内核错误码沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇将介绍 IS_ERR 函数的使用。 一、IS_ERR函数用法 先看下用法: 二、IS_ERR函数 对于任何一个指针来说,必然存在三种情况: 一种是合…

微信小程序开发(学习记录1.0)

首先&#xff0c;把遇到的问题贴出来&#xff0c;主要是这个解决问题的思路&#xff0c;供大家参考。 现在的问题是将下面的导航栏做出来&#xff0c;但是在自己做的时候 遇到的问题 在app.json文件中输入tarBar&#xff0c;就会生成模板代码&#xff0c;默认会生成一个list的模…