Replace all spaces in a string with %20

Gorav Singal

October 01, 2020

TL;DR

Count spaces first to find the new length, then iterate backwards replacing spaces with %20. Working backwards avoids overwriting characters you haven't processed yet.

Replace all spaces in a string with %20

Problem Statement

Replace all spaces in a string with ‘%20’ (three characters). Do this in place and assume you have enough space in array

Solution (Simple)

This is the simplest solution which many people might think.

  • Iterate from left side (begining)
  • After encountering a space, first shift entire array by 2 places.
  • Put %20 at consecutive location
  • Repeat this process

Obviously, if you see you need to shift the remaining array as many times as number of spaces. And, is not an efficient algorithm.

I will not put this silly code.

Complexity

The complexity would be close to O(n^2)

A Better Solution

If you start from left side, you saw we need to shift the array. What if we start from the right side.

  • First calculate number of spaces in array, this will help in calculating the resultant last index
  • Start iterating from right most side.
  • Maintain two index counters. One for original array characters, other for resultant index positions.
  • Start copying character one by one.
  • If found space, just copy consecutive %20

At the end, you will achieve the purpose. Lets see the code

private static int countSpaces(char[] input) {
   int c = 0;
   for (int i=0; i<input.length; i++) {
      if (input[i] == ' ') {
         c ++;
      }
   }
   return c;
}

public static int replace(char[] input, int len) {
   int spaces = countSpaces(input);
   if (spaces == 0) return len;
   
   int lastIndex = (len-1) + (2 * spaces);
   int resultIndex = lastIndex;
   
   for (int i=len-1; i>=0; i--) {
      if (input[i] == ' ') {
         //copy %20
         input[lastIndex] = '0';
         input[lastIndex-1] = '2';
         input[lastIndex-2] = '%';
         lastIndex -= 3;
      }
      else {
         //copy actual characters
         input[lastIndex] = input[i];
         lastIndex --;
      }
   }
   
   return resultIndex;
}

Complexity

The complexity is O(n)

Share

Related Posts

Valid Palindrome - Leet Code Solution

Valid Palindrome - Leet Code Solution

Problem Statement Given a string, determine if it is a palindrome, considering…

Valid Anagrams - Leet Code Solution

Valid Anagrams - Leet Code Solution

Problem Statement Given two strings s and t , write a function to determine if t…

First Unique Character in a String - Leet Code Solution

First Unique Character in a String - Leet Code Solution

Problem Statement Given a string, find the first non-repeating character in it…

Reverse String - Leet Code Solution

Reverse String - Leet Code Solution

Problem Statement Write a function that reverses a string. The input string is…

Rotate Image - Leet Code Solution

Rotate Image - Leet Code Solution

Problem Statement You are given an n x n 2D matrix representing an image, rotate…

Validate Sudoku - Leet Code Solution

Validate Sudoku - Leet Code Solution

Problem Statement Determine if a 9x9 Sudoku board is valid. Only the filled…

Latest Posts

AI Video Generation in 2025 — Models, Costs, and How to Build a Cost-Effective Pipeline

AI Video Generation in 2025 — Models, Costs, and How to Build a Cost-Effective Pipeline

AI video generation went from “cool demo” to “usable in production” in 2024-202…

AI Models in 2025 — Cost, Capabilities, and Which One to Use

AI Models in 2025 — Cost, Capabilities, and Which One to Use

Choosing the right AI model is one of the most impactful decisions you’ll make…

AI Image Generation in 2025 — Models, Costs, and How to Optimize Spend

AI Image Generation in 2025 — Models, Costs, and How to Optimize Spend

Generating one image with AI costs between $0.002 and $0.12. That might sound…

AI Coding Assistants in 2025 — Every Tool Compared, and Which One to Actually Use

AI Coding Assistants in 2025 — Every Tool Compared, and Which One to Actually Use

Two years ago, AI coding meant one thing: GitHub Copilot autocompleting your…

AI Agents Demystified — It's Just Automation With a Better Brain

AI Agents Demystified — It's Just Automation With a Better Brain

Let’s cut through the noise. If you read Twitter or LinkedIn, you’d think “AI…

Security Ticketing and Incident Response

Security Ticketing and Incident Response

The worst time to figure out your incident response process is during an…