当前位置:网站首页>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 .
边栏推荐
- 重载和重写的区别
- View UI Plus 发布 1.3.1 版本,增强 TypeScript 使用体验
- Tyut Taiyuan University of technology 2022 introduction to software engineering summary
- 5.MSDN的下载和使用
- 最新坦克大战2022-全程开发笔记-2
- View UI plus releases version 1.1.0, supports SSR, supports nuxt, and adds TS declaration files
- 【九阳神功】2017复旦大学应用统计真题+解析
- Questions and answers of "signal and system" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology
- MySQL锁总结(全面简洁 + 图文详解)
- Summary of multiple choice questions in the 2022 database of tyut Taiyuan University of Technology
猜你喜欢

2. Preliminary exercises of C language (2)

更改VS主题及设置背景图片

Design a key value cache to save the results of the most recent Web server queries

Questions and answers of "basic experiment" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology

最新坦克大战2022-全程开发笔记-1

魏牌:产品叫好声一片,但为何销量还是受挫

9.指针(上)

3.C语言用代数余子式计算行列式

C语言入门指南

9. Pointer (upper)
随机推荐
魏牌:产品叫好声一片,但为何销量还是受挫
仿牛客技术博客项目常见问题及解答(一)
ROS machine voice
MySQL limit x, -1 doesn't work, -1 does not work, and an error is reported
9. Pointer (upper)
Tyut Taiyuan University of technology 2022 introduction to software engineering summary
Network layer 7 protocol
Database operation of tyut Taiyuan University of technology 2022 database
【毕业季·进击的技术er】再见了,我的学生时代
Comparison between FileInputStream and bufferedinputstream
[the Nine Yang Manual] 2022 Fudan University Applied Statistics real problem + analysis
【九阳神功】2016复旦大学应用统计真题+解析
System design learning (III) design Amazon's sales rank by category feature
CorelDRAW plug-in -- GMS plug-in development -- Introduction to VBA -- GMS plug-in installation -- Security -- macro Manager -- CDR plug-in (I)
Voir ui plus version 1.3.1 pour améliorer l'expérience Typescript
4. Binary search
5. Download and use of MSDN
Pit avoidance Guide: Thirteen characteristics of garbage NFT project
最新坦克大战2022-全程开发笔记-3
甲、乙机之间采用方式 1 双向串行通信,具体要求如下: (1)甲机的 k1 按键可通过串行口控制乙机的 LEDI 点亮、LED2 灭,甲机的 k2 按键控制 乙机的 LED1