Concept

Strings

Every "change" creates a new String object. 💡 Why immutable? Thread-safe, safe as HashMap keys, string pool caching.

Also known as String.

Where it fits

  1. Foundation
  2. Strings

Packages: Performance (pkg19performance), Core Java (pkg1core)

Learn

Existing chapters for this concept.

  • Strings

    Foundation

    Every "change" creates a new String object. 💡 Why immutable? Thread-safe, safe as HashMap keys, string pool caching.

    Open lesson →

See it in code

Existing Java examples.

  • String Concat Benchmark

    Performance · pkg19performance/jmh-demo/src/main/java/pkg19performance/jmh/StringConcatBenchmark.java · pkg19performance · StringConcatBenchmark.java

    Open example →
  • core 9 Strings Demo

    Core Java · pkg1core/core9StringsDemo.java · pkg1core · core9StringsDemo.java

    - Strings are immutable: every "modification" creates a new String. - Literals are interned in the string pool; `new String("x")` is a new object. - Use…

    Open example →

Practice

Existing LeetCode material in JavaForge.

  • Longest Common Subsequence

    Blind 75 · DP · pkg5leetcode/blind75/blind75_LC1143LongestCommonSubsequence.java · pkg5leetcode · blind75_LC1143LongestCommonSubsequence.java

    2D DP on character prefixes of both strings. Time O(mn), Space O(mn)

    Open practice →
  • Valid Palindrome

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC125ValidPalindrome.java · pkg5leetcode · blind75_LC125ValidPalindrome.java

    Two pointers skip non-alphanumeric, compare lowercased. Time O(n), Space O(1)

    Open practice →
  • Valid Parentheses

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC20ValidParentheses.java · pkg5leetcode · blind75_LC20ValidParentheses.java

    Stack matches closing bracket to top opening. Time O(n), Space O(n)

    Open practice →
  • Valid Anagram

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC242ValidAnagram.java · pkg5leetcode · blind75_LC242ValidAnagram.java

    Frequency count arrays for both strings. Time O(n), Space O(26)

    Open practice →
  • Encode and Decode Strings

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC271EncodeAndDecodeStrings.java · pkg5leetcode · blind75_LC271EncodeAndDecodeStrings.java

    Length-prefix encoding: len#payload for each string. Time O(total chars), Space O(total chars)

    Open practice →
  • Longest Substring Without Repeating Characters

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC3LongestSubstringWithoutRepeating.java · pkg5leetcode · blind75_LC3LongestSubstringWithoutRepeating.java

    Sliding window with last-seen index map. Time O(n), Space O(min(n, alphabet))

    Open practice →
  • Longest Repeating Character Replacement

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC424LongestRepeatingCharacterReplacement.java · pkg5leetcode · blind75_LC424LongestRepeatingCharacterReplacement.java

    Sliding window; shrink when window - maxFreq > k. Time O(n), Space O(26)

    Open practice →
  • Group Anagrams

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC49GroupAnagrams.java · pkg5leetcode · blind75_LC49GroupAnagrams.java

    HashMap keyed by sorted char signature. Time O(n k log k), Space O(nk)

    Open practice →
  • Longest Palindromic Substring

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC5LongestPalindromicSubstring.java · pkg5leetcode · blind75_LC5LongestPalindromicSubstring.java

    Expand around center for odd/even lengths. Time O(n^2), Space O(1)

    Open practice →
  • Palindromic Substrings

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC647PalindromicSubstrings.java · pkg5leetcode · blind75_LC647PalindromicSubstrings.java

    Expand around each center counting palindromes. Time O(n^2), Space O(1)

    Open practice →
  • Minimum Window Substring

    Blind 75 · String · pkg5leetcode/blind75/blind75_LC76MinimumWindowSubstring.java · pkg5leetcode · blind75_LC76MinimumWindowSubstring.java

    Expand right until valid; shrink left while valid. Time O(n), Space O(1) alphabet

    Open practice →
  • Longest Common Prefix

    Interview 150 · pkg5leetcode/interview150/interview150_LC14LongestCommonPrefix.java · pkg5leetcode · interview150_LC14LongestCommonPrefix.java

    Compare characters column-wise across all strings. Time O(n*m), Space O(1)

    Open practice →
  • Isomorphic Strings

    Interview 150 · pkg5leetcode/interview150/interview150_LC205IsomorphicStrings.java · pkg5leetcode · interview150_LC205IsomorphicStrings.java

    Two hash maps enforce one-to-one char mapping. Time O(n), Space O(1)

    Open practice →
  • Reverse String

    Interview 150 · pkg5leetcode/interview150/interview150_LC344ReverseString.java · pkg5leetcode · interview150_LC344ReverseString.java

    Two pointers swap chars from both ends. Time O(n), Space O(1)

    Open practice →
  • Find All Anagrams in a String

    Interview 150 · pkg5leetcode/interview150/interview150_LC438FindAllAnagramsInAString.java · pkg5leetcode · interview150_LC438FindAllAnagramsInAString.java

    Sliding window with char frequency match count. Time O(n), Space O(1)

    Open practice →

Prepare

Existing interview questions.

Java versions