Remove the first and last occurrence of a given Character from a String
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 = “GeekforBeginner”, 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++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
Output
helo word
Time Complexity: O(N)
Auxiliary Space: O(1)
Method #2: Using Index Method
Below is the implementation:
C++
// 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 |
Java
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
# 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 |
C#
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)); } } |
Javascript
<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> |
Output
helo word
Time Complexity: O(N)
Auxiliary Space: O(N)