Open In App

Replace all occurrences of a string with space

Last Updated : 16 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Given a string and a substring, the task is to replace all occurrences of the substring with space. We also need to remove trailing and leading spaces created due to this.

Examples:

Input: str = “LIELIEILIEAMLIECOOL”, sub = “LIE” 
Output: I AM COOL By replacing all occurrences of Sub in Str with empty spaces, we extract the secret message as I AM COOL.

 Input: str = “XYZAXYZBXYZC”, sub = “XYZ” 
Output: ABC By replacing all occurrences of Sub in Str with empty spaces, we extract the secret message as ABC.

Approach:

  • In the given string Str, replace all occurrences of Sub with empty spaces.
  • Remove unwanted empty spaces in start and end of the string.
  • Print the modified string.

Below is the implementation of the above approach: 

C++




// C++ implementation to extract
// the secret message
#include <bits/stdc++.h>
using namespace std;
 
// Trim method implementation to remove
// trailing and leading white-spaces
string trim(const string &s)
{
    auto start = s.begin();
    while (start != s.end() &&
           isspace(*start))
        start++;
 
    auto end = s.end();
    do
    {
        end--;
    } while (distance(start, end) > 0 &&
                    isspace(*end));
 
    return string(start, end + 1);
}
 
// Function to extract the secret message
string extractSecretMessage(string str,
                            string sub)
{
    // Replacing all occurrences of
    // Sub in Str by empty spaces
    size_t pos;
    while ((pos = str.find(sub)) != string::npos)
        str.replace(pos, 3, " ");
 
    // Removing unwanted spaces in the
    // start and end of the string
    str = trim(str);
 
    return str;
}
 
// Driver code
int main(int argc, char const *argv[])
{
    string str = "LIELIEILIEAMLIECOOL";
    string sub = "LIE";
    cout << extractSecretMessage(str, sub)
         << endl;
    return 0;
}
 
// This code is contributed by
// sanjeev2552


Java




// Java implementation to extract the secret message
import java.io.*;
import java.util.*;
 
class GFG {
 
    // Function to extract the secret message
    static String extractSecretMessage(String Str, String Sub)
    {
        // Replacing all occurrences of
        // Sub in Str by empty spaces
        Str = Str.replaceAll(Sub, " ");
 
        // Removing unwanted spaces in the
        // start and end of the string
        Str = Str.trim();
 
        return Str;
    }
 
    // Driver code
    public static void main(String args[])
    {
        String Str = "LIELIEILIEAMLIECOOL";
        String Sub = "LIE";
        System.out.println(extractSecretMessage(Str, Sub));
    }
}


Python3




# Python3 implementation to extract
# the secret message
 
# Function to extract the secret message
def extractSecretMessage(Str, Sub):
 
    # Replacing all occurrences of
    # Sub in Str by empty spaces
    Str= Str.replace(Sub, " ")
 
    # Removing unwanted spaces in the
    # start and end of the string
     
    return Str.strip()
 
# Driver code
Str = "LIELIEILIEAMLIECOOL"
Sub = "LIE"
print(extractSecretMessage(Str, Sub))
 
# This code is contributed
# by ihritik


C#




// C# implementation to extract the
// secret message
using System;
 
class GFG
{
 
// Function to extract the secret message
static string extractSecretMessage(string Str,
                                   string Sub)
{
    // Replacing all occurrences of
    // Sub in Str by empty spaces
    Str = Str.Replace(Sub, " ");
 
    // Removing unwanted spaces in the
    // start and end of the string
    Str = Str.Trim();
 
    return Str;
}
 
// Driver code
public static void Main()
{
    string Str = "LIELIEILIEAMLIECOOL";
    string Sub = "LIE";
    Console.WriteLine(extractSecretMessage(Str, Sub));
}
}
 
// This code is contributed by Ryuga


Javascript




//  Javascript implementation to extract
//  the secret message
 
//  Function to extract the secret message
function extractSecretMessage(Str, Sub) {
 
    //  Replacing all occurrences of
    //  Sub in Str by empty spaces
    let i = 0, n = Str.length;
    let k = Sub.length;
    while(i < n) {
        Str = (Str.replace(Sub, " "));
        i += k;
    }
 
    // Removing unwanted spaces in the
    // start and end of the string
    return Str.trim();
}
 
//  Driver code
let Str = " LIELIEILIEAMLIECOOL";
let Sub = "LIE";
console.log(extractSecretMessage(Str, Sub));
 
//  This code is contributed
//  by Samim Hossain Mondal


PHP




<?php
// PHP implementation to extract the
// secret message
 
// Function to extract the secret message
function extractSecretMessage($Str, $Sub)
{
    // Replacing all occurrences of
    // Sub in Str by empty spaces
    $Str = str_replace($Sub, " ", $Str);
 
    // Removing unwanted spaces in the
    // start and end of the string
     
    return trim($Str);
}
 
// Driver code
$Str = "LIELIEILIEAMLIECOOL";
$Sub = "LIE";
echo extractSecretMessage($Str, $Sub);
 
// This code is contributed
// by ihritik
?>


Output

I AM COOL







Complexity Analysis:

  • Time Complexity: O(N), as we are using  replace function which will cost us O(N) time.
  • Auxiliary Space: O(1), as we are not using any extra space.

Approach:

  • Initialize an empty string called result.
  • Loop through the input string str, and for each character.
  • Check if the current character is the same as the first character of the substring sub. If so, check if the next characters match with the substring. If there is a match, skip the characters that match with the substring and add a space to the result string.
  • If the current character is not the same as the first character of the substring, add it to the result string.
  • Trim the result string to remove leading and trailing spaces.
  • Return the result string.

Below is the implementation of the above approach:

C++




#include <bits/stdc++.h>
using namespace std;
 
string extractSecretMessage(string str, string sub) {
    string result;
    int n = str.length(), m = sub.length(), i = 0;
 
    while (i < n) {
        if (str[i] == sub[0] && str.substr(i, m) == sub) {
            result += " ";
            i += m;
        } else {
            result += str[i];
            i++;
        }
    }
 
    // Trim the result string
    auto start = result.begin();
    while (start != result.end() && isspace(*start))
        start++;
 
    auto end = result.end();
    do {
        end--;
    } while (distance(start, end) > 0 && isspace(*end));
 
    return string(start, end + 1);
}
 
int main() {
    string str = "LIELIEILIEAMLIECOOL";
    string sub = "LIE";
    cout << extractSecretMessage(str, sub) << endl; // Output: I AM COOL
    return 0;
}


Java




import java.util.*;
 
public class Main {
    public static void main(String[] args) {
        String str = "LIELIEILIEAMLIECOOL";
        String sub = "LIE";
        System.out.println(extractSecretMessage(str, sub)); // Output: I AM COOL
    }
 
    // Function to extract the secret message from a given string 'str' by removing all occurrences of 'sub'
    public static String extractSecretMessage(String str, String sub) {
        StringBuilder result = new StringBuilder(); // Initialize an empty StringBuilder to store the extracted secret message
        int n = str.length(); // Get the length of the input string 'str'
        int m = sub.length(); // Get the length of the substring 'sub' we want to remove from 'str'
        int i = 0; // Initialize a pointer 'i' to traverse through the input string 'str'
 
        // Loop through the input string 'str'
        while (i < n) {
            // Check if the current character matches the first character of the substring 'sub'
            // and if the remaining substring from the current position has enough characters to match 'sub'
            if (str.charAt(i) == sub.charAt(0) && i + m <= n && str.substring(i, i + m).equals(sub)) {
                result.append(" "); // If a match is found, append a space to the result (to separate words)
                i += m; // Move the pointer 'i' to skip the substring 'sub' in 'str'
            } else {
                // If no match is found, append the current character from 'str' to the result
                result.append(str.charAt(i));
                i++; // Move the pointer 'i' to the next character in 'str'
            }
        }
 
        // Convert the result StringBuilder to a String and remove any leading or trailing spaces
        String trimmedResult = result.toString().trim();
 
        // Return the extracted secret message
        return trimmedResult;
    }
}


Python3




def extract_secret_message(s, sub):
    result = []  # Initialize an empty list to store the extracted secret message
    n = len(s)  # Get the length of the input string 's'
    m = len(sub)  # Get the length of the substring 'sub' we want to remove from 's'
    i = 0  # Initialize a pointer 'i' to traverse through the input string 's'
 
    # Loop through the input string 's'
    while i < n:
        # Check if the current character matches the first
        # character of the substring 'sub'
        # and if the remaining substring from the current
        # position has enough characters to match 'sub'
        if s[i] == sub[0] and i + m <= n and s[i:i + m] == sub:
            # If a match is found, append a space to the result (to separate words)
            result.append(" ")
            i += # Move the pointer 'i' to skip the substring 'sub' in 's'
        else:
            # If no match is found, append the current character from 's' to the result
            result.append(s[i])
            i += 1  # Move the pointer 'i' to the next character in 's'
 
    # Convert the result list to a string and remove any leading or trailing spaces
    trimmed_result = ''.join(result).strip()
 
    # Return the extracted secret message
    return trimmed_result
 
 
# Test case
str_input = "LIELIEILIEAMLIECOOL"
sub_input = "LIE"
print(extract_secret_message(str_input, sub_input))  # Output: "I AM COOL"


C#




using System;
using System.Text;
 
public class GFG
{
    public static void Main(string[] args)
    {
        string str = "LIELIEILIEAMLIECOOL";
        string sub = "LIE";
        Console.WriteLine(ExtractSecretMessage(str, sub)); // Output: I AM COOL
    }
 
    // Function to extract the secret message from a given string 'str' by removing all occurrences of 'sub'
    public static string ExtractSecretMessage(string str, string sub)
    {
        StringBuilder result = new StringBuilder(); // Initialize an empty StringBuilder to store the extracted secret message
        int n = str.Length; // Get the length of the input string 'str'
        int m = sub.Length; // Get the length of the substring 'sub' we want to remove from 'str'
        int i = 0; // Initialize a pointer 'i' to traverse through the input string 'str'
 
        // Loop through the input string 'str'
        while (i < n)
        {
            // Check if the current character matches the first character of the substring 'sub'
            // and if the remaining substring from the current position has enough characters to match 'sub'
            if (str[i] == sub[0] && i + m <= n && str.Substring(i, m) == sub)
            {
                result.Append(" "); // If a match is found, append a space to the result (to separate words)
                i += m; // Move the pointer 'i' to skip the substring 'sub' in 'str'
            }
            else
            {
                // If no match is found, append the current character from 'str' to the result
                result.Append(str[i]);
                i++; // Move the pointer 'i' to the next character in 'str'
            }
        }
 
        // Convert the result StringBuilder to a String and remove any leading or trailing spaces
        string trimmedResult = result.ToString().Trim();
 
        // Return the extracted secret message
        return trimmedResult;
    }
}
 
// This code is contributed by akshitaguprzj3


Javascript




// Function to extract a secret message from a given string
function extractSecretMessage(str, sub) {
    let result = ''// To store the extracted secret message
    let n = str.length;  // Length of the input string
    let m = sub.length;  // Length of the substring to search for
    let i = 0;  // Index for traversing the input string
 
    while (i < n) {
        if (str[i] === sub[0] && str.substring(i, i + m) === sub) {
            result += ' '// Add a space to separate secret words
            i += m;  // Move the index to skip the found substring
        } else {
            result += str[i];  // Append the current character to the result
            i++;  // Move to the next character
        }
    }
 
    // Trim the result string to remove leading and trailing spaces
    let start = 0;
    while (start < result.length && result[start] === ' ')
        start++;
 
    let end = result.length - 1;
    while (end >= start && result[end] === ' ')
        end--;
 
    // Return the trimmed secret message
    return result.substring(start, end + 1);
}
 
// Main function
function main() {
    let str = 'LIELIEILIEAMLIECOOL';
    let sub = 'LIE';
    console.log(extractSecretMessage(str, sub)); // Output: I AM COOL
}
 
// Call the main function to run the code
main();
 
// This code is contributed by rambabuguphka


Output

I AM COOL








Time Complexity:  O(n * m), where n is the length of the input string and m is the length of the substring to be replaced. This is because we are iterating over the input string and comparing substrings of length m with the given substring.

Auxiliary Space: O(n) because we are using an additional string ‘result’ to store the modified string. 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads