当前位置:网站首页>Leetcode. 3. Longest substring without repeated characters - more than 100% solution
Leetcode. 3. Longest substring without repeated characters - more than 100% solution
2022-07-06 13:36:00 【Li bohuan】
subject : Given a string s , Please find out that there are no duplicate characters in it Longest substrings The length of .
Example 1:
Input : s = "abcabcbb" Output : 3 explain : Because the longest substring without repeating characters is"abc", So its The length is 3.
Input : s = "bbbbb" Output : 1 explain : Because the longest substring without repeating characters is "b", So its length is 1
The code is as follows :
public int lengthOfLongestSubstring(String s) {
if(s == null || s.equals("")){
return 0;
}
// With i How far to the left do you push the end without repeating ( consider a The location of the last occurrence and i-1 How far can we push )
char[] chars = s.toCharArray();
int n = chars.length;
//0-255 Of ASCII code use 256 The length array can represent all characters ASCii Code a byte The longest 256 But now it is defined 128 Characters
//map[i] = v representative i This ascii Code last appeared in v Location
//char Put characters in map The array will be automatically converted to int type Its value is char Character ascii Code value such as 'a' Namely 97
int[] map = new int[128];
for(int i = 0; i < map.length; i++){
map[i] = -1;// Means that all characters are in -1 The position has appeared
}
int ans = 1;// Initial answer
int pre = 1;// How long did the previous position push to the left ( Including myself )
map[chars[0]] = 0;// The first character is in
for(int i = 1; i < n; i++){
// Consider the character char[i] Where it was last seen
// for example adcba 01234 Then length is character char[i] The present position i Subtract the last position map[char[i]]
// 4 - 0 = 4 That is to say dcba
int p1 = i -map[chars[i]];
// Consider how much the previous position pushed to the left Add yourself Is the position you can push
int p2 = pre + 1;
// The minimum value of the two is the length that the current position can be pushed forward
int cur = Math.min(p1,p2);
// Take the maximum of all the answers
ans = Math.max(ans,cur);
// Continue the cycle later , So update pre and char[i] Where it was last seen
pre = cur;
map[chars[i]] = i;
}
return ans;
} The main idea is dynamic planning , Considering that i How far can the ending character be pushed forward , This is related to how far the previous character can be pushed forward , Use an array map Store the last occurrence of this character , Initialize to -1, In order to calculate the distance , The calculation formula is unified .
边栏推荐
- hashCode()与equals()之间的关系
- Alibaba cloud microservices (IV) service mesh overview and instance istio
- 学编程的八大电脑操作,总有一款你不会
- 1.C语言初阶练习题(1)
- 13 power map
- Alibaba cloud microservices (I) service registry Nacos, rest template and feign client
- [while your roommate plays games, let's see a problem]
- [面试时]——我如何讲清楚TCP实现可靠传输的机制
- 凡人修仙学指针-2
- 【九阳神功】2018复旦大学应用统计真题+解析
猜你喜欢

MySQL锁总结(全面简洁 + 图文详解)

Change vs theme and set background picture

仿牛客技术博客项目常见问题及解答(一)

(ultra detailed onenet TCP protocol access) arduino+esp8266-01s access to the Internet of things platform, upload real-time data collection /tcp transparent transmission (and how to obtain and write L

E-R graph to relational model of the 2022 database of tyut Taiyuan University of Technology

Service ability of Hongmeng harmonyos learning notes to realize cross end communication

arduino+水位传感器+led显示+蜂鸣器报警

Arduino+ water level sensor +led display + buzzer alarm

1. C language matrix addition and subtraction method

8.C语言——位操作符与位移操作符
随机推荐
【手撕代码】单例模式及生产者/消费者模式
Introduction and use of redis
View UI plus released version 1.3.1 to enhance the experience of typescript
西安电子科技大学22学年上学期《基础实验》试题及答案
【毕业季·进击的技术er】再见了,我的学生时代
Conceptual model design of the 2022 database of tyut Taiyuan University of Technology
C语言入门指南
(超详细onenet TCP协议接入)arduino+esp8266-01s接入物联网平台,上传实时采集数据/TCP透传(以及lua脚本如何获取和编写)
Network layer 7 protocol
【九阳神功】2016复旦大学应用统计真题+解析
System design learning (I) design pastebin com (or Bit.ly)
2.C语言矩阵乘法
Floating point comparison, CMP, tabulation ideas
Alibaba cloud microservices (III) sentinel open source flow control fuse degradation component
最新坦克大战2022-全程开发笔记-1
【九阳神功】2017复旦大学应用统计真题+解析
[中国近代史] 第九章测验
【九阳神功】2021复旦大学应用统计真题+解析
仿牛客技术博客项目常见问题及解答(一)
[the Nine Yang Manual] 2020 Fudan University Applied Statistics real problem + analysis