(补)4.13每日一题

news2024/11/19 22:32:54

给定一个字符串 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/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day946.厂商定制的Android系统为什么也要解耦? -系统重构实战

厂商定制的Android系统为什么也要解耦&#xff1f; Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于厂商定制的Android系统为什么也要解耦&#xff1f;的内容。 一、Android 系统架构 AOSP&#xff0c;全称是 Android Open Source Project&#xff0c;中文译为“An…

永磁同步电机流频比(I/F)控制及Matlab/Simulink仿真分析

文章目录 前言一、流频比I/F控制原理二、永磁同步电机I/F控制系统Matlab/Simulink仿真分析2.1.仿真电路分析2.1.1 I/F控制算法2.1.2 电流环2.1.3 输出处理2.1.4 主电路 2.2 仿真结果分析 总结 前言 本章节采用流频比I/F控制方法驱动永磁同步电机的转动&#xff0c;首先分析流频…

传统机器学习(二)逻辑回归算法(一)

传统机器学习(二)逻辑回归算法(一) 1.1 算法概述 1.1.1 逻辑回归及其梯度推导 ​ 线性回归的任务&#xff0c;就是构造一个预测函数来映射输入的特征矩阵x和标签值y的线性关系&#xff0c;而构造预测函数的核心就是找出模型的参数,著名的最小二乘法就是用来求解线性回归中参…

J-Link不能连接目标MCU几点常见原因

J-Link是嵌入式软件最常用的工具之一&#xff0c;但是&#xff0c;在使用这个工具时&#xff0c;也会遇到各种各样的问题。 J-Link的连接 使用J-Link&#xff0c;首先第一步硬件连接&#xff0c;确认J-Link和PC机之间是否连接正常&#xff0c;并确认上位机能和 J-Link 建立正…

ZedGraph 绘制动态曲线

文章目录 前言&#xff1a;开发环境&#xff1a;1 下载ZedGraph 控件并设置图形界面2 功能实现3 需求升级4 小结 话不多数&#xff0c;先上一个效果图&#xff1a; 前言&#xff1a; 需要采集一些设备的数据以图表的形式展示出来&#xff0c;研究数据的走向是否平稳&#xff0…

mac Homebrew方式安装 activemq

两种方式安装 activemq 一、通过Homebrew管理安装 1. 确保homebrew可用 查看brew版本 brew -v 如果报错&#xff0c;则可能是未启用brew&#xff0c;需要安装或更新 更新并重新查看是否安装成功 brew update brew -v 2. 安装 activemq&#xff1a;下载activemq前 会先下载相…

Direct3D 12——纹理——寻址模式

可将经过常数插值或线性插值的纹理定义为一个返回向量值的函数T&#xff08;u, v&#xff09; &#xff08;r,g,b,a&#xff09;&#xff0c;即给 定纹理坐标&#xff08;u,v&#xff09;∈[0,1]^2,则上述纹理函数T将返回颜色&#xff08;r,g, b, a&#xff09;。 Direct3D允许…

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

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

MFC加载动态gif图片文件C++语言,基于MFC的动画播放控件

MFC加载动态gif图片&#xff0c;使用VS2015环境 一、将下载的PictureEx.h和PictureEx.cpp放在工程文件的目录下&#xff0c;动态gif图片放在工程文件的res文件夹下&#xff1b;&#xff08;GIF动图下载 https://icons8.com/preloaders/en/search/move&#xff09; &#xff08…

企业级VUE前端项目各目录文件的作用

概述 本文项目是基于Vue CLI3构建工具&#xff08;基于 webpack)生成的脚手架项目。Vue CLI 现已处于维护模式&#xff0c;VUE官方推荐使用 create-vue&#xff08;基于 Vite&#xff09;构建工具。 vue-cli2.0与3.0在目录结构方面&#xff0c;有明显的不同,vue-cli3.0移除了…

Linux性能优化实战

1. TCP/IP报文详解 TCP/IP 定义了电子设备如何连入因特网&#xff0c;以及数据如何在它们之间传输的标准。协议采用了4层的层级结构&#xff0c;每一层都呼叫它的下一层所提供的协议来完成自己的需求。TCP负责发现传输的问题&#xff0c;一有问题就发出信号&#xff0c;要求重…

根据cadence设计图学习硬件知识day04了解一些芯片

1.PI3PCIE3212 &#xff08;双向信道多路复用器/多路分解器开关&#xff09; PI3PCIE3212是PCIe Gen3.0、8Gbps、4对2差分&#xff0c;PCI ExpressR 3.0性能&#xff0c;8.0Gbps 双向信道多路复用器/多路分解器开关。由于其低的位对位偏斜&#xff0c;高的通道对通道噪声隔离…

邂逅Node.js开发

目录&#xff1a; 1 Node.js是什么&#xff1f; 2 Node的应用场景 3 Node安装和管理 4 JavaScript代码执行 5 Node的输入和输出 6 Node的全局对象 node命令是可以直接运行js脚本的,在某文件夹底下只要有js文件&#xff0c;就可以通过命令提示符运行该js文件。格式是 &…

简单聊聊煤炭行业的数字化和可持续发展

煤在普通人的心目中是一种能引起复杂感情的东西。我们喜欢它在冬天给我们带来温暖&#xff0c;我们不喜欢它因为它黢黑黢黑的&#xff0c;沾在身上特别黑&#xff0c;看起来脏兮兮的。在笔者的记忆中&#xff0c;小时候煤可是生活的必需品。 小时候在冬天的河北必须要生炉子&a…

电源常识-纹波-EMI

1、纹波﹔纹波就是一个直流电压中的交流成分。直流电压本来应该是一个固定的值&#xff0c;但是很多时候它是通过交流电压整流、滤波后得来的&#xff0c;如图1,由于滤波不彻底&#xff0c;就会有剩余的交流成分&#xff0c;即使采用电池供电也会因负载的波动而产生波纹。事实上…

FreeRTOS 任务相关 API 函数

FreeRTOS 中用于创建和删除任务的 API 函数如下表所示&#xff1a; 1. 函数 xTaskCreate() 此函数用于使用动态的方式创建任务&#xff0c;任务的任务控制块以及任务的栈空间所需的内存&#xff0c; 均由 FreeRTOS 从 FreeRTOS 管理的堆中分配&#xff0c;若使用此函数&#x…

聚焦慕思欧洲设计中心,用设计谱写健康睡眠新篇章

4月20日&#xff0c;在意大利米兰&#xff0c;多位欧洲顶尖设计师齐聚ADI博物馆&#xff0c;共同见证“梦享之美”——慕思欧洲设计中心暨设计国际梦之队成立发布会的盛大召开。慕思此次发布会特地选定在米兰国际家具展期间&#xff0c;而这是公认的世界三大家具展之一&#xf…

DF竞赛平台携手嬴彻科技与清华大学智能产业研究院,助力自动驾驶挑战赛圆满落幕!

由DataFountain竞赛平台&#xff08;简称DF平台&#xff09;提供办赛支持的「首届“嬴彻-清华AIR杯”自动驾驶挑战赛&#xff1a;决策规划算法」已圆满落幕。作为一场前沿性自动驾驶类比赛&#xff0c;本次大赛立足“高速道路”和“城市道路”两大真实场景&#xff0c;选择“半…

SEO文章批量生成

SEO文章生成器 想必大部分人对于 SEO 这个词不会陌生&#xff0c;它是指一系列的优化策略&#xff0c;目的是让网站能够在搜索引擎上更容易地被检索&#xff0c;并获得更多的流量和曝光度。但是&#xff0c;SEO 的优化并非易事&#xff0c;尤其对于那些没有相关技术知识和经验…

科技云报到:存储开源,风雨飘摇下“披着羊皮的狼”?

科技云报道原创。 这些年开源界的风风雨雨&#xff0c;时不时撼动着人们的内心。 2022年&#xff0c;俄乌冲突导致全球最大的独立开源软件公司SUSE、美国开源软件巨头Redhat、主流开源容器引擎Docker&#xff0c;纷纷宣布停止与俄罗斯的合作。 而全球最大的开源及私有代码项目…