leetcode:3. 无重复字符的最长子串
3. 无重复字符的最长子串
示例 1:
示例 2:
示例 3:
法1:通过暴力破解,遍历一次字符串,每次将新加的字符和字符串比较,有重复,就刷新字符串的左边界,没重复,就继续加。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left=0,right=1,len=1,res=0;
int s_len=s.length();
if(s_len<2)return s_len; //防止空串和只有一个字符的情况
while(right<s_len){ //遍历整个字符串
for(int i=left;i<right;i++){ //遍历新添加的字符在前边字符串中是否重复
if(s[i]==s[right]){
left=i+1;
len=right-left;
break;
}
}
right++;
len++;
res=max(len,res);
}
return res;
}
};
法2:使用map来大大降低字符查重的时间
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left=0,right=0,len=0,res=0;
unordered_map<char,int>hash;
int s_len=s.length();
while(right<s_len){ //遍历整个字符串
if(hash.find(s[right])!=hash.end()&&hash[s[right]]>=left){ //若重复
left=hash[s[right]]+1; //更新左边界
len=right-left; //更新长度
}
hash[s[right]]=right; //加入到map里
right++;
len++;
res=max(len,res);
}
return res;
}
};
法3:利用vector数组来代替map,桶排序的思想。
class Solution {
public:
int lengthOfLongestSubstring(string s) {
int left=0,right=0,len=0,res=0;
vector<int>v(128,-1);
int s_len=s.length();
while(right<s_len){ //遍历整个字符串
char tempChar=s[right];
if(v[(int)tempChar]>=left){ //如果字符tempChar没出现过,那v[tempChar]值就是 //-1,出现过的话,v[tempChar]就是上次出现的下标了
left=v[tempChar]+1;
len=right-left;
}
v[tempChar]=right; //更新v[tempChar]
right++;
len++;
res=max(len,res);
}
return res;
}
};
leetcode:3. 无重复字符的最长子串的更多相关文章
- Leetcode(三)无重复字符的最长子串
3. 无重复字符的最长子串 题目描述 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最 ...
- 【LeetCode】无重复字符的最长子串【滑动窗口法】
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb"输出: 3 解释: 因为无重复字符的最长子串是 "abc&quo ...
- [LeetCode] 3. 无重复字符的最长子串
题目链接:(https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) 题目描述: 给定一个字符 ...
- 【leetcode 3. 无重复字符的最长子串】解题报告
思路:滑动窗口的思想 方法一:滑动窗口 int lengthOfLongestSubstring(string s) { /* 控制一个滑动窗口,窗口内的字符都是不重复的,通过set可以做到判断字符是 ...
- LeetCode 3: 无重复字符的最长子串 Longest Substring Without Repeating Characters
题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. Given a string, find the length of the longest substring withou ...
- Leetcode——3. 无重复字符的最长子串
难度: 中等 题目 Given a string, find the length of the longest substring without repeating characters. 给定一 ...
- 力扣Leetcode 3. 无重复字符的最长子串
无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串 ...
- [LeetCode]3. 无重复字符的最长子串(滑动窗口)
题目 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度. 示例 1: 输入: "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc ...
- [LeetCode]3.无重复字符的最长子串(Java)
原题地址: longest-substring-without-repeating-characters/submissions 题目描述: 示例 1: 输入: s = "pwwkew&qu ...
- LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
题目描述 给定一个字符串,找出不含有重复字符的最长子串的长度. 示例: 给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3. ...
随机推荐
- element_ui实现表格内套表单,点击可以编辑
<template> <div class="app-container"> <el-table :data="list" str ...
- 并发操作导致的BUG-解决方案
一.问题由来 上周五项目发布新版本之后,生产环境一直没有出现什么问题,大家也都开开心心,平平安安的开始新需求的开发. 可是刚稳定运行没几天,负责人突然在群里面发了一个截图,从图片中的信息可以看到,有一 ...
- 探究WPF中文字模糊的问题:TextOptions的用法
有网友问WPF中一些文字模糊是什么问题.之前我也没有认真思考过这个问题,只是大概知道和WPF的像素对齐(pixel snapping).抗锯齿(anti-aliasing)有关,通过设置附加属性Tex ...
- https://pengchenggang.github.io/vuejsdev-com-github 备份发布
https://pengchenggang.github.io/vuejsdev-com-github 备份发布 现在还没有解决的就是 开clash,代码提交不上去,只能关了提,但是关了提交,也得赶运 ...
- 代码片段管理软件 - 发现 utools 这个工具还行 windows软件
代码片段管理软件 - 发现 utools 这个工具还行 windows软件 介绍 这个软件不是专业的代码片段工具 好在还能凑合用 最完美的还是苹果那个软件,但是用的win没办法了 这个可以粘贴到vsc ...
- iview Button按钮 全局click事件vue拦截 节流 - 防抖 Throttle debounce
这里是按钮的节流,就没用防抖 const setVueClickGlobalThrottle = Vue => { // 节流 const on = Vue.prototype.$on Vue. ...
- 5G+实时云渲染,助力虚拟仿真实训教学升级
随着新冠疫情走向全球大流行的发展趋势,学校教育被迫迁徙到线上教学平台,供需平衡被打破,疫情让"在线教学"成为"口罩式的刚需". 我们看到互联网+教育带来便利的同 ...
- package.json报错"No license field"问题解决
问题描述 warning package.json: No license field 问题原因 package.json中缺少license字段 解决方法 package.json中添加licens ...
- 记录--手写$forceUpdate,vm.$destroy方法
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 vm.$forceUpdate (1)作用 迫使Vue.js实例重新渲染.注意它仅仅影响实例本身以及插入插槽内容的子组件,而不是所有子组件 ...
- Android Graphics 多屏同显/异显
" 亏功一篑,未成丘山.凿井九阶,不次水泽.行百里者半九十,小狐汔济濡其尾.故曰时乎,时不再来.终终始始,是谓君子." 01 前言 随着Android智能驾舱系统的普及各种信息交互 ...