Given a character C and a string S, the task is to remove the first and last occurrence of the character C from the string S.
Examples:
Input: S = “GeekforGeeks”, C = ‘e’
Output: GeksforGeks
Explanation:
GeekforGeeks -> GekforGeksInput: S = “helloWorld”, C = ‘l’
Output: heloWord
Approach:
The idea is to traverse the given string from both ends and find the first occurrence of the character C encountered and remove the corresponding occurrences. Finally, print the resultant string.
- Define a function named removeOcc, which accepts a reference to a string s and a character ch as input parameters.
- Traverse the string s from the beginning using a for loop and check if each character matches with the given character ch.
- If the character is found, erase the first occurrence of that character using the erase function and break the loop.
- Traverse the string s from the end using another for loop and check if each character matches with the given character ch.
- If the character is found, erase the last occurrence of that character using the erase function and break the loop.
- Return the modified string s.
- In the main function, define a string s and initialize it with “hello world“.
- Define a character ch and initialize it with ‘l‘.
- Call the removeOcc function and pass the string s and character ch as arguments.
- Print the modified string s using cout.
Below is the implementation of the above approach:
// C++ Program to implement // the above approach #include <bits/stdc++.h> using namespace std;
// Function to remove first and last // occurrence of a given character // from the given string string removeOcc(string& s, char ch)
{ // Traverse the given string from
// the beginning
for ( int i = 0; s[i]; i++) {
// If ch is found
if (s[i] == ch) {
s.erase(s.begin() + i);
break ;
}
}
// Traverse the given string from
// the end
for ( int i = s.length() - 1;
i > -1; i--) {
// If ch is found
if (s[i] == ch) {
s.erase(s.begin() + i);
break ;
}
}
return s;
} // Driver Code int main()
{ string s = "hello world" ;
char ch = 'l' ;
cout << removeOcc(s, ch);
return 0;
} |
// Java Program to implement // the above approach class GFG{
// Function to remove first and last // occurrence of a given character // from the given String static String removeOcc(String s, char ch)
{ // Traverse the given String from
// the beginning
for ( int i = 0 ; i < s.length(); i++)
{
// If ch is found
if (s.charAt(i) == ch)
{
s = s.substring( 0 , i) +
s.substring(i + 1 );
break ;
}
}
// Traverse the given String from
// the end
for ( int i = s.length() - 1 ; i > - 1 ; i--)
{
// If ch is found
if (s.charAt(i) == ch)
{
s = s.substring( 0 , i) +
s.substring(i + 1 );
break ;
}
}
return s;
} // Driver Code public static void main(String[] args)
{ String s = "hello world" ;
char ch = 'l' ;
System.out.print(removeOcc(s, ch));
} } // This code is contributed by sapnasingh4991 |
# Python3 program to implement # the above approach # Function to remove first and last # occurrence of a given character # from the given string def removeOcc(s, ch):
# Traverse the given string from
# the beginning
for i in range ( len (s)):
# If ch is found
if (s[i] = = ch):
s = s[ 0 : i] + s[i + 1 :]
break
# Traverse the given string from
# the end
for i in range ( len (s) - 1 , - 1 , - 1 ):
# If ch is found
if (s[i] = = ch):
s = s[ 0 : i] + s[i + 1 :]
break
return s
# Driver Code s = "hello world"
ch = 'l'
print (removeOcc(s, ch))
# This code is contributed by sanjoy_62 |
// C# Program to implement // the above approach using System;
class GFG{
// Function to remove first and last // occurrence of a given character // from the given String static String removeOcc(String s, char ch)
{ // Traverse the given String from
// the beginning
for ( int i = 0; i < s.Length; i++)
{
// If ch is found
if (s[i] == ch)
{
s = s.Substring(0, i) +
s.Substring(i + 1);
break ;
}
}
// Traverse the given String from
// the end
for ( int i = s.Length - 1; i > -1; i--)
{
// If ch is found
if (s[i] == ch)
{
s = s.Substring(0, i) +
s.Substring(i + 1);
break ;
}
}
return s;
} // Driver Code public static void Main(String[] args)
{ String s = "hello world" ;
char ch = 'l' ;
Console.Write(removeOcc(s, ch));
} } // This code is contributed by sapnasingh4991 |
<script> // JavaScript Program to implement
// the above approach
// Function to remove first and last
// occurrence of a given character
// from the given String
function removeOcc(s, ch) {
// Traverse the given String from
// the beginning
for ( var i = 0; i < s.length; i++) {
// If ch is found
if (s[i] === ch) {
s = s.substring(0, i) + s.substring(i + 1);
break ;
}
}
// Traverse the given String from
// the end
for ( var i = s.length - 1; i > -1; i--) {
// If ch is found
if (s[i] === ch) {
s = s.substring(0, i) + s.substring(i + 1);
break ;
}
}
return s;
}
// Driver Code
var s = "hello world" ;
var ch = "l" ;
document.write(removeOcc(s, ch));
</script> |
helo word
Time Complexity: O(N)
Auxiliary Space: O(1)
Method #2: Using Index Method
- Convert the string into a list.
- Traverse the list and if we find a given character, then remove that index using pop() and break the loop
- Traverse the list from the end and if we find a given character, then remove that index using pop() and break the loop.
- Join the list and print it.
Below is the implementation:
// C++ program to implement // the above approach #include <iostream> #include <string> using namespace std;
// Function to remove first and last // occurrence of a given character // from the given string string removeOcc(string str, char ch) {
// Convert string to list
string s = str;
// Traverse the string from starting position
for ( int i = 0; i < s.length(); i++) {
// if we find ch then remove it and break the loop
if (s[i] == ch) {
s.erase(i, 1);
break ;
}
}
// Traverse the string from the end
for ( int i = s.length() - 1; i >= 0; i--) {
// if we find ch then remove it and break the loop
if (s[i] == ch) {
s.erase(i, 1);
break ;
}
}
// Return the string
return s;
} int main() {
string s = "hello world" ;
char ch = 'l' ;
cout << removeOcc(s, ch) << endl;
return 0;
} // Contributed by adityasha4x71 |
import java.util.ArrayList;
import java.util.List;
// java program to implement // the above approach // Function to remove first and last // occurrence of a given character // from the given string public class RemoveOccurrence {
static String removeOcc(String str, char ch) {
List<Character> s = new ArrayList<>();
// adding every character into the list
for ( int i = 0 ; i < str.length(); i++) {
s.add(str.charAt(i));
}
// travers from starting if we find our
// deseired character remove it
for ( int i = 0 ; i < s.size(); i++) {
if (s.get(i) == ch) {
s.remove(i);
break ;
}
}
// traverse from ending if we find the
// desired character remove int
for ( int i = s.size() - 1 ; i >= 0 ; i--) {
if (s.get(i) == ch) {
s.remove(i);
break ;
}
}
// creating a stringbuilder so we can easily add into it
StringBuilder sb = new StringBuilder();
// append every character in the list using append function
for ( char c : s) {
sb.append(c);
}
// convert the string builder into string and return it
return sb.toString();
}
// main function
public static void main(String[] args) {
String s = "hello world" ;
char ch = 'l' ;
System.out.println(removeOcc(s, ch));
}
} |
# Python3 program to implement # the above approach # Function to remove first and last # occurrence of a given character # from the given string def removeOcc( str , ch):
# Convert string to list
s = list ( str )
# Traverse the string from starting position
for i in range ( len (s)):
# if we find ch then remove it and break the loop
if (s[i] = = ch):
s.pop(i)
break
# Traverse the string from the end
for i in range ( len (s) - 1 , - 1 , - 1 ):
# if we find ch then remove it and break the loop
if (s[i] = = ch):
s.pop(i)
break
# Join the list
return ''.join(s)
# Driver Code s = "hello world"
ch = 'l'
print (removeOcc(s, ch))
# This code is contributed by vikkycirus |
using System;
class Program {
// Function to remove first and last
// occurrence of a given character
// from the given string
static string RemoveOcc( string str, char ch) {
// Convert string to list
string s = str;
// Traverse the string from starting position
for ( int i = 0; i < s.Length; i++) {
// if we find ch then remove it and break the loop
if (s[i] == ch) {
s = s.Remove(i, 1);
break ;
}
}
// Traverse the string from the end
for ( int i = s.Length - 1; i >= 0; i--) {
// if we find ch then remove it and break the loop
if (s[i] == ch) {
s = s.Remove(i, 1);
break ;
}
}
// Return the string
return s;
}
static void Main( string [] args) {
string s = "hello world" ;
char ch = 'l' ;
Console.WriteLine(RemoveOcc(s, ch));
}
} |
<script> // JavaScript program to implement // the above approach // Function to remove first and last // occurrence of a given character // from the given string function removeOcc(str, ch)
{ // Convert string to list
s = str.split( '' )
// Traverse the string from starting position
for (let i = 0; i < s.length; i++)
{
// if we find ch then remove it and break the loop
if (s[i] == ch){
s.splice(i, 1)
break
}
}
// Traverse the string from the end
for (let i = s.length - 1; i >= 0; i--)
{
// if we find ch then remove it and break the loop
if (s[i] == ch)
{
s.splice(i, 1)
break
}
}
// Join the list
return s.join( '' )
} // Driver Code let s = "hello world"
let ch = 'l'
document.write(removeOcc(s, ch)) // This code is contributed by shinjanpatra </script> |
helo word
Time Complexity: O(N)
Auxiliary Space: O(N)