Open In App

Remove the first and last occurrence of a given Character from a String

Improve
Improve
Like Article
Like
Save
Share
Report

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 -> GekforGeks

Input: 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

  • 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++




// 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)



Last Updated : 02 Nov, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads