Encode and Decode Strings

LC 271 (Premium) - Interactive Visualization

Idea By: Chetan Pachpande | Executed By: Claude

← Back to Home
Algorithm: Character separation using special delimiter (ASCII 257)
Time Complexity: O(n) for encode/decode where n is total length
Space Complexity: O(n) for storing encoded string
Key Insight: Use non-printable characters as delimiters to handle any input safely

Input & Controls

5x
Ready
Select operation to begin

Visual Process

Original String List

Encoded String

Decoded String List

Character Analysis

a Normal characters
Separator (ASCII 257)
Empty list marker (ASCII 258)

Java Implementation

public class Codec {

    // Encodes a list of strings to a single string.
    public String encode(List<String> strs) {
        // Handle empty list case
        if (strs.size() == 0) {
            return Character.toString((char)258);
        }
        
        // Use ASCII 257 as separator (non-printable character)
        String separator = Character.toString((char)257);
        StringBuilder sb = new StringBuilder();
        
        // Append each string with separator
        for (String s : strs) {
            sb.append(s);
            sb.append(separator);
        }
        
        // Remove last separator
        sb.deleteCharAt(sb.length() - 1);
        return sb.toString();
    }

    // Decodes a single string to a list of strings.
    public List<String> decode(String s) {
        // Handle empty list case
        if (s.equals(Character.toString((char)258))) {
            return new ArrayList<>();
        }
        
        String separator = Character.toString((char)257);
        
        // Split by separator, keeping empty strings
        return Arrays.asList(s.split(separator, -1));
    }
}

Execution Log