Replace all occurrences of a string with space
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 ?> |
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 + = m # 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 |
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.
Contact Us