当前位置:网站首页>longest substring without repeating characters
longest substring without repeating characters
2022-08-09 06:33:00 【In the history of the strongest disciple】
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其
长度为 3.
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b"
,所以其长度为 1.
示例 3:
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke"
,所以其长度为 3.
示例 4:
输入: s = "" 输出: 0
实现代码: (双指针)
public class Test23 {
public int getMaxSubStr(String subStr){
if(subStr.equals("")){
return 0;
}
HashSet<Character> hashSet = new HashSet<>();
int returnObject = 0;
for(int i=0;i<subStr.length();i++){
hashSet.add(subStr.charAt(i));
for(int j=i+1;j<subStr.length();j++){
//如果hashSet 中有字符,
if(hashSet.contains(subStr.charAt(j))){
break;
}
hashSet.add(subStr.charAt(j));
}
returnObject = Math.max(hashSet.size(),returnObject);
hashSet.removeAll(hashSet);
}
return returnObject;
}
public static void main(String[] args) {
String s = "pwwkew";
System.out.println("s:"+s+",return:"+new Test23().getMaxSubStr(s));
}
}
实现代码(滑动窗口)
/*
给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度.
示例 1:
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3.
示例 2:
输入: s = "bbbbb"
输出: 1
解释: 因为无重复字符的最长子串是 "b",所以其长度为 1.
示例 3:
输入: s = "pwwkew"
输出: 3
解释: 因为无重复字符的最长子串是 "wke",所以其长度为 3.
请注意,你的答案必须是 子串 的长度,"pwke" 是一个子序列,不是子串.
示例 4:
输入: s = ""
输出: 0
提示:
0 <= s.length <= 5 * 104
s 由英文字母、数字、符号和空格组成
*/
import java.util.HashSet;
import java.util.Set;
public class Test23 {
/*public int getMaxSubStr(String subStr){
if(subStr.equals("")){
return 0;
}
HashSet<Character> hashSet = new HashSet<>();
int returnObject = 0;
for(int i=0;i<subStr.length();i++){
hashSet.add(subStr.charAt(i));
for(int j=i+1;j<subStr.length();j++){
//如果hashSet 中有字符,
if(hashSet.contains(subStr.charAt(j))){
break;
}
hashSet.add(subStr.charAt(j));
}
returnObject = Math.max(hashSet.size(),returnObject);
hashSet = new HashSet<>();
}
return returnObject;
}*/
public int getMaxSubStr2(String subStr){
HashSet<Character> hashSet = new HashSet<>();
int returnObject = 0;
int rk =0 ;
for(int i=0;i<subStr.length();i++){
if(i!=0){
hashSet.remove(subStr.charAt(i-1));
}
for(int j=rk;j<subStr.length();j++){
//如果hashSet 中有字符,
if(hashSet.contains(subStr.charAt(j))){
break;
}
hashSet.add(subStr.charAt(j));
rk++;
}
returnObject = Math.max(hashSet.size(),returnObject);
}
return returnObject;
}
public int lengthOfLongestSubstring(String s) {
// 哈希集合,记录每个字符是否出现过
Set<Character> occ = new HashSet<Character>();
int n = s.length();
// 右指针,初始值为 -1,相当于我们在字符串的左边界的左侧,还没有开始移动
int rk = -1, ans = 0;
for (int i = 0; i < n; ++i) {
if (i != 0) {
// 左指针向右移动一格,移除一个字符
occ.remove(s.charAt(i - 1));
}
while (rk + 1 < n && !occ.contains(s.charAt(rk + 1))) {
// 不断地移动右指针
occ.add(s.charAt(rk + 1));
++rk;
}
// 第 i 到 rk 个字符是一个极长的无重复字符子串
ans = Math.max(ans, rk - i + 1);
}
return ans;
}
public static void main(String[] args) {
//String s = "dvdf";
String s = "acdddskwleod";
Test23 test23 = new Test23();
System.out.println("s:"+s+",return:"+test23.getMaxSubStr2(s));
System.out.println(test23.lengthOfLongestSubstring(s));
}
}
执行结果:
边栏推荐
- 05 多线程与高并发 - ThreadPoolExecutor 源码解析
- crc计算
- 中英文说明书丨CalBioreagents ACTH N端单克隆抗体
- Output method of list string print(*a) print(““.join(str(c) for c in a) )
- MYSQL Advanced Chapter - Query Interception Analysis, Lock Mechanism, Master-Slave Replication
- 语句加锁分析
- leetcode 之 零移位
- MongDb的查询方式
- 运算放大器(OPA)超详细参数讲解-运放---以及8个型号的运算放大器分析对比
- Import the pycharm environment package into another environment
猜你喜欢
代码目录结构
Unity C# 委托——事件,Action,Func的作用和区别
pdf加密、找回密码
Output method of list string print(*a) print(““.join(str(c) for c in a) )
网络学习总结
Error jinja2.exceptions.UndefinedError: 'form' is undefined
How to find package information and pin definitions for NXP S32K1xx series microcontrollers
db.sqlite3没有“as Data Source“解决方法
运算放大器(OPA)超详细参数讲解-运放---以及8个型号的运算放大器分析对比
2022-08-08: Given an array arr, it represents the height of the missiles that will appear in order from morning to night.When the cannon shoots missiles, once the cannon is set to shoot at a certain h
随机推荐
中英文说明书丨TRC D-阿卓糖(D-Altrose)
如何 认识与学习BASH
像天才一样思考:如何培养自己的创造力?
推进产教融合 赋能教育创新发展 | 华云数据荣获“企业贡献奖”
事务总结
Program Performance Analysis - Complexity Analysis
Error: flask: TypeError: 'function' object is not iterable
BeautifulSoup4的介绍与使用
Search 1688 product interface by image (item_search_img-search 1688 product by image (Politao interface) code docking tutorial
Reverse Engineering
Simple to use Lambda expressions
【R语言】对文件进行归一化整理到各文件类型文件夹
.NET高级技术
el-table缓存数据
Unity C# 委托——事件,Action,Func的作用和区别
无重复的字符的最长子串
运放-运算放大器经典应用电路大全-应用电路大全
变压器的工作原理(图解,原理图讲解,一看就懂)
Altium designer software commonly used the most complete package library, including schematic library, PCB library and 3D model library
SIGINT,SIGKILL,SIGTERM信号区别,各类信号总结