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++ 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 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 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# 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 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 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:
#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;
} |
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;
}
} |
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"
|
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 |
// 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.