首页 > 其他分享 >无重复字符的最长子串

无重复字符的最长子串

时间:2023-05-04 20:33:40浏览次数:36  
标签:子串 字符 int max window 重复 length judge 最长

 1.设置开始的窗口长度为1,最大长度为0如果字符串的长度length本身为0返回max_length;

 2.将一个字母输入到字符串temp中,如果窗口长度等于length那max_length就等于window_length;

 3.判断加入下一个字符后字符串是否重复如果不重复则window_length+1,更新max_length的值和j的值;

 4.如果重复则window_length长度不变整体向右移动一个长度,更新j的值;

 5.repeat函数判断字符串里是否有重复字符。

#include<iostream>
#include<cstring>
using namespace std;
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int length = s.length();
int max_length = 0;
int i = 0,j = 0;
string temp,temp1;
if(length == 0)
return max_length;
int window_length = 1;
max_length = 1;
while(j != length - 1)
{
temp = s.substr(i,window_length);
if(window_length == length){
max_length = window_length;
break;
}
if(repeat(s.substr(i,window_length+1))){
window_length++;
if(window_length > max_length)
max_length = window_length;
j = i + window_length - 1;
for (int k = i; k < j; k++) {
cout << s[k];
}
cout << endl;
}
else {
i++;
j = i + window_length -1;
}
}
return max_length;
}
int repeat(string s){
int length = s.length();
int judge = 1;//没有重复
for(int i = 0;i<length;i++){
for(int j = i+1;j<length;j++){
if(s[i] == s[j]){
judge = 0;
break;
}
}
if(judge == 0){
break;
}
}
return judge;
}
};

int main() {

string s1 = "abcabcde";
Solution k;
int g = k.lengthOfLongestSubstring(s1);
cout << "最大长度为" << g;
return 0;
}

标签:子串,字符,int,max,window,重复,length,judge,最长
From: https://www.cnblogs.com/hbro/p/17372411.html

相关文章

  • 第四章 字符串
    串string,零个或多个字符组成的有限序列.空串用∅表示子串:串中任意个字符的序列.主串:包含子串的串ASCII编码串的存储字符串的模式匹配朴素模式匹配算法时间复杂度O((n-m+1)*m)=O(nm)KMP算法主串指针不回溯.......
  • JAVA中字符串的常用方法
    JAVA中字符串的常用方法字符串不能改变,创建后就无法更改了创建字符串的两种方式直接赋值new的方式获取一个字符串对象 构造方法构造方法说明publicString()创建空白字符串,不包含任何内容publicString(StringOriginal)根据传入的字符串,创建字符串对象......
  • 翻转字符串里的单词
    题目:给定一个字符串,逐个翻转字符串中的每个单词。示例1:输入:"theskyisblue"输出: "blueisskythe输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。解题思路:移除多余空格(双指针......
  • 验证码,发送短信验证码,校验确认密码和密码,密码需要数字字母特殊字符任选2种组合
    密码需要数字字母特殊字符任选2种组合constvalidatePwd=(rule,value,callback)=>{constreg=/(?!^(\d+|[a-zA-Z]+|[~!@#$%^&*?]+)$)^[\w~!@#$%^&*?]{8,32}$/if(reg.test(value)==true){callback()}else{callback(newError(&#......
  • TypeScript 学习笔记 — 模板字符串和类型体操(十五)
    目录基本介绍字符串类型体操实操环节1.字符串首字母大写CapitalizeString2.获取字符串第一个字符FirstChar3.获取字符串最后一个字符LastChar4.字符串转元组StringToTuple5.元组转字符串TupleToString6.重复字符串RepeatString7.字符串分割SplitString8.获取字符串......
  • PostGIS中获取所有EPSG的编码以及对应Proj4字符串
    场景PostGIS在Windows上的下载与安装:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/124107198在上面安装好PostGIS后会默认生成一个spatial_ref_sys表,此表保存空间数据库中使用的坐标系统的数字ID和文本描述。 安装好之后就可以将其导出为需要的文件格式,或......
  • 字符设备驱动-5.设备树函数
    1.设备树相关的头文件1.处理DTBof_fdt.h//dtb文件的相关操作函数,我们一般用不到,//因为dtb文件在内核中已经被转换为device_node树(它更易于使用)2.处理device_nodeof.h//提供设备树的一般处理函数,//比如of_property_read_u32(读取某个属性的u32值),//......
  • 翻转字符串里的单词
    给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的......
  • GUID转换成16位、19位、22位唯一字符串
    ///<summary>///依据GUID获取16位的唯一字符串///<paramname=\"guid\"></param>///<returns></returns>publicstaticstringGuidTo16String(){longi=1;......
  • linux设备树-基于pinctrl的LED字符设备驱动
    在前面我们已经介绍了pinctrlsubsystem相关的基础知识,这一节我们尝试修改设备树,在pincontrollernode下添加两个子节点分别用来控制LED1~LED4的全亮/全灭。然后我们编写LED驱动程序,配置LED的两种状态:default:默认状态,LED1~LED4全亮;myled-off:LED1~LED4全灭;一、修改设备树1.1......