当前位置:网站首页>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 .
边栏推荐
- Questions and answers of "Fundamentals of RF circuits" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
- 2.C语言初阶练习题(2)
- hashCode()与equals()之间的关系
- The latest tank battle 2022 full development notes-1
- Alibaba cloud microservices (I) service registry Nacos, rest template and feign client
- ROS machine voice
- Change vs theme and set background picture
- 2.初识C语言(2)
- Comparison between FileInputStream and bufferedinputstream
- Aurora system model of learning database
猜你喜欢

4. Binary search

Cloud native trend in 2022

Data manipulation language (DML)

Summary of multiple choice questions in the 2022 database of tyut Taiyuan University of Technology

自定义RPC项目——常见问题及详解(注册中心)

Conceptual model design of the 2022 database of tyut Taiyuan University of Technology

The overseas sales of Xiaomi mobile phones are nearly 140million, which may explain why Xiaomi ov doesn't need Hongmeng

Alibaba cloud microservices (I) service registry Nacos, rest template and feign client

9. Pointer (upper)

MySQL事务及实现原理全面总结,再也不用担心面试
随机推荐
[modern Chinese history] Chapter V test
[中国近代史] 第九章测验
关于双亲委派机制和类加载的过程
Questions and answers of "basic experiment" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)
Alibaba cloud microservices (IV) service mesh overview and instance istio
【九阳神功】2017复旦大学应用统计真题+解析
Cookie和Session的区别
Caching mechanism of leveldb
Change vs theme and set background picture
3. C language uses algebraic cofactor to calculate determinant
Comparison between FileInputStream and bufferedinputstream
MySQL Database Constraints
[the Nine Yang Manual] 2022 Fudan University Applied Statistics real problem + analysis
MySQL中count(*)的实现方式
用栈实现队列
Wei Pai: the product is applauded, but why is the sales volume still frustrated
仿牛客技术博客项目常见问题及解答(二)
ArrayList的自动扩容机制实现原理
仿牛客技术博客项目常见问题及解答(一)