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 Repeating Character Replacement - https://leetcode.com/problems/longest-repeating-character-replacement/description/ class Solution { // Brute Force // Time Complexity: O(n^2) // Space Complexity: O(m) where m is number of letters in alphabet (26) // public int characterReplacement(String s, int k) { // int maxLength = 0; // for (int i = 0; i < s.length(); i++) { // Map
freq = new HashMap<>(); // int maxF = 0; // for (int j = i; j < s.length(); j++) { // char c = s.charAt(j); // freq.put(c, freq.getOrDefault(c, 0) + 1); // maxF = Math.max(maxF, freq.get(c)); // // len of current substring - count of most frequent character // if((j - i + 1) - maxF <= k) { // maxLength = Math.max(maxLength, (j - i + 1)); // } // } // } // return maxLength; // } // Sliding Window // Time Complexity: O(26.n) ~ O(n) // Space Complexity: O(26) ~ O(1) // public int characterReplacement(String s, int k) { // int maxLength = 0; // int l = 0; // Map
freq = new HashMap<>(); // for (int r = 0; r < s.length(); r++) { // char c = s.charAt(r); // freq.put(c, freq.getOrDefault(c, 0) + 1); // int maxF = Collections.max(freq.values()); // int lenOfWindow = r - l + 1; // if(lenOfWindow - maxF <= k) { // maxLength = Math.max(maxLength, lenOfWindow); // } else { // while(lenOfWindow - maxF > k) { // char leftChar = s.charAt(l); // freq.put(leftChar, freq.get(leftChar) - 1); // l++; // lenOfWindow--; // } // } // } // return maxLength; // } // Sliding Window (Optimised) // Time Complexity: O(n) // Space Complexity: O(26) ~ O(1) public int characterReplacement(String s, int k) { int maxLength = 0; int l = 0; Map
freq = new HashMap<>(); int maxF = 0; for (int r = 0; r < s.length(); r++) { char c = s.charAt(r); freq.put(c, freq.getOrDefault(c, 0) + 1); maxF = Math.max(maxF, freq.get(c)); while((r - l + 1) - maxF > k) { char leftChar = s.charAt(l); freq.put(leftChar, freq.get(leftChar) - 1); l++; } maxLength = Math.max(maxLength, (r - l + 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)