Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
// Longest Substring Without Repeating Characters - https://leetcode.com/problems/longest-substring-without-repeating-characters/description/?source=submission-ac class Solution { // Time Complexity: O(N^2) // Space Complexity; O(k) // where k is the length of longest substring // public int lengthOfLongestSubstring(String s) { // int maxLength = 0; // for(int i = 0; i < s.length(); i++) { // Set
set = new HashSet<>(); // set.add(s.charAt(i)); // int currentLength = 1; // for(int j = i + 1; j < s.length(); j++) { // if(set.contains(s.charAt(j))) { // break; // } // set.add(s.charAt(j)); // currentLength++; // } // if(currentLength > maxLength) { // maxLength = currentLength; // } // } // return maxLength; // } // Time Complexity: O(n) // Space Complexity: O(k) // where n is the string length // and k is the size of the character set // public int lengthOfLongestSubstring(String s) { // Set
window = new HashSet<>(); // int left = 0, right = 0, maxLength = 0; // for(; right < s.length(); right++) { // Character c = s.charAt(right); // while(window.contains(c)) { // window.remove(s.charAt(left)); // left++; // } // window.add(c); // maxLength = Math.max(maxLength, right - left + 1); // } // return maxLength; // } // Time Complexity: O(n) // Space Complexity: O(k) // where k is the size of the character set public int lengthOfLongestSubstring(String s) { if (s == null || s.length() == 0) { return 0; } // Assuming ASCII character set (128 characters) // We store the last index where we saw each character. int[] lastSeenIndex = new int[128]; Arrays.fill(lastSeenIndex, -1); // -1 means "not seen yet" int maxLength = 0; int left = 0; // The left boundary of the sliding window for (int right = 0; right < s.length(); right++) { char c = s.charAt(right); // Check if the character was seen before and if its last // occurrence is inside our current window [left, right]. if (lastSeenIndex[c] >= left) { // Duplicate found in the window. // Move the left pointer to the position after the last occurrence. left = lastSeenIndex[c] + 1; } // Update the last seen index for this character to the current position. lastSeenIndex[c] = right; // Calculate the length of the current window and update max. maxLength = Math.max(maxLength, right - left + 1); } return maxLength; } }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)