Skip to content
Related Articles

Related Articles

Convert characters of a string to opposite case
  • Difficulty Level : Easy
  • Last Updated : 11 Feb, 2021

Given a string, convert the characters of the string into opposite case,i.e. if a character is lower case than convert it into upper case and vice-versa. 
Examples: 

Input : geeksForgEeks
Output : GEEKSfORGeEKS

Input : hello every one
Output : HELLO EVERY ONE

ASCII values  of alphabets: A – Z = 65 to 90, a – z = 97 to 122 
Steps: 

  1. Take one string of any length and calculate its length.
  2. Scan string character by character and keep checking  the index . 
    • If character in a index is in lower case, then subtract 32 to convert it in upper case, else add 32 to convert it in lower case
  3. Print the final string.

C++




// CPP program to Convert characters
// of a string to opposite case
#include <iostream>
using namespace std;
 
// Function to convert characters
// of a string to opposite case
void convertOpposite(string& str)
{
    int ln = str.length();
 
    // Conversion according to ASCII values
    for (int i = 0; i < ln; i++) {
        if (str[i] >= 'a' && str[i] <= 'z')
            // Convert lowercase to uppercase
            str[i] = str[i] - 32;
        else if (str[i] >= 'A' && str[i] <= 'Z')
            // Convert uppercase to lowercase
            str[i] = str[i] + 32;
    }
}
 
// Driver function
int main()
{
    string str = "GeEkSfOrGeEkS";
 
    // Calling the Function
    convertOpposite(str);
 
    cout << str;
    return 0;
}


Java




// Java program to Convert characters
// of a string to opposite case
class Test {
 
    // Method to convert characters
    // of a string to opposite case
    static void convertOpposite(StringBuffer str)
    {
        int ln = str.length();
 
        // Conversion using predefined methods
        for (int i = 0; i < ln; i++) {
            Character c = str.charAt(i);
            if (Character.isLowerCase(c))
                str.replace(i, i + 1,
                            Character.toUpperCase(c) + "");
            else
                str.replace(i, i + 1,
                            Character.toLowerCase(c) + "");
        }
    }
 
    public static void main(String[] args)
    {
        StringBuffer str
            = new StringBuffer("GeEkSfOrGeEkS");
        // Calling the Method
        convertOpposite(str);
 
        System.out.println(str);
    }
}
// This code is contributed by Gaurav Miglani


Python3




# Python3 program to Convert characters
# of a string to opposite case
 
# Function to convert characters
# of a string to opposite case
def convertOpposite(str):
    ln = len(str)
 
    # Conversion according to ASCII values
    for i in range(ln):
        if str[i] >= 'a' and str[i] <= 'z':
 
            # Convert lowercase to uppercase
            str[i] = chr(ord(str[i]) - 32)
 
        elif str[i] >= 'A' and str[i] <= 'Z':
 
            # Convert lowercase to uppercase
            str[i] = chr(ord(str[i]) + 32)
 
# Driver code
if __name__ == "__main__":
    str = "GeEkSfOrGeEkS"
    str = list(str)
 
    # Calling the Function
    convertOpposite(str)
 
    str = ''.join(str)
    print(str)
 
# This code is contributed by
# sanjeev2552


C#




// C# program to Convert characters
// of a string to opposite case
using System;
using System.Text;
 
class GFG{
     
    // Method to convert characters
    // of a string to opposite case
    static void convertOpposite(StringBuilder str)
    {
        int ln = str.Length;
             
        // Conversion according to ASCII values
        for (int i=0; i<ln; i++)
        {
            if (str[i]>='a' && str[i]<='z')
             
                //Convert lowercase to uppercase
                str[i] = (char)(str[i] - 32);
                 
            else if(str[i]>='A' && str[i]<='Z')
             
                //Convert uppercase to lowercase
                str[i] = (char)(str[i] + 32);
        }
    }
     
    // Driver code
    public static void Main()
    {
        StringBuilder str = new StringBuilder("GeEkSfOrGeEkS");
        // Calling the Method
        convertOpposite(str);
        Console.WriteLine(str);
        }
}
// This code is contributed by PrinciRaj1992


Output: 

gEeKsFoRgEeKs

Time Complexity: O(n) 
Note: This program can alternatively be done using C++ inbuilt functions – Character.toLowerCase(char) and Character.toUpperCase(char). 

Approach 2: The problem can be solved using letter case toggling. Follow the below steps to solve the problem:



  • Traverse the given string S.
  • For each character Si, do Si =  Si ^ (1 << 5).
  • Si ^ (1 << 5) toggles the 5th bit which means 97 will become 65 and 65 will become 97:
    • 65 ^ 32 = 97
    • 97 ^ 32 = 65 
  • Print the string after all operations

Below is the implementation of the above approach:

C++




// C++ program to toggle all characters
#include<bits/stdc++.h>
using namespace std;
  
// Function to toggle characters
void toggleChars(string &S)
{
    for(auto &it : S){
       if(isalpha(it)){
         it ^= (1 << 5);
       }
    }
}
  
// Driver code
int main()
{
    string S = "GeKf@rGeek$";
    toggleChars(S);
    cout << "String after toggle " << endl;
    cout << S << endl;
    return 0;
}
 
//Code contributed by koulick_sadhu


This article is contributed by Rishabh Jain. If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :