Open In App

Check if uppercase characters (Capital letters) in a string are used correctly or not | Set 2

Given a string S consisting of uppercase and lowercase letters, the task is to check if uppercase characters are used correctly in the given string or not. Correct usage of uppercase characters are as follows:

Examples:



Input: S = “Geeks”
Output: Yes
Explanation: Only the first character of the string is in uppercase and all the remaining characters are in lowercase.

Input: S = “GeeksForGeeks”
Output: No



Approach: The given problem has already been discussed in Set 1 of this article. This article suggests a different and easy to implement approach which is based on the following two observations: 

If the complete string has been traversed without violating any of the above two cases, return true.

Below is the implementation of the above approach




// C++ program for the above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if uppercase
// characters are used correctly or not
bool detectUppercaseUse(string word)
{
    // Loop to iterate through
    // the given string S
    for (int i = 1; i < word.length(); i++) {
 
        // Current character is
        // Capital and previous
        // character is small
        if (word[i] - 'A' < 32
            && word[i - 1] - 'A' >= 32) {
            return false;
        }
 
        // Current character is
        // small and previous is
        // a capital character
        else if (word[i] - 'A' >= 32
                 && word[i - 1] - 'A' < 32) {
 
            // If previous char
            // is the 1st char
            if (i - 1 == 0)
                continue;
 
            return false;
        }
    }
 
    // Return true
    return true;
}
// Driver Code
int main()
{
    string S = "GeeKs";
    cout << (detectUppercaseUse(S) ? "Yes" : "No");
 
    return 0;
}




// Java program for the above approach
import java.util.*;
 
class GFG{
 
  // Function to check if uppercase
  // characters are used correctly or not
  static boolean detectUppercaseUse(char []word)
  {
 
    // Loop to iterate through
    // the given String S
    for (int i = 1; i < word.length; i++) {
 
      // Current character is
      // Capital and previous
      // character is small
      if (word[i] - 'A' < 32
          && word[i - 1] - 'A' >= 32) {
        return false;
      }
 
      // Current character is
      // small and previous is
      // a capital character
      else if (word[i] - 'A' >= 32
               && word[i - 1] - 'A' < 32) {
 
        // If previous char
        // is the 1st char
        if (i - 1 == 0)
          continue;
 
        return false;
      }
    }
 
    // Return true
    return true;
  }
 
  // Driver Code
  public static void main(String[] args)
  {
    String S = "GeeKs";
    System.out.print(detectUppercaseUse(S.toCharArray()) ? "Yes" : "No");
  }
}
 
// This code is contributed by 29AjayKumar




# Python code for the above approach
 
# Function to check if uppercase
# characters are used correctly or not
def detectUppercaseUse(word):
 
    # Loop to iterate through
    # the given string S
    for i in range(1, len(word)):
 
        # Current character is
        # Capital and previous
        # character is small
        if (ord(word[i]) - ord('A') < 32 and ord(word[i - 1]) - ord('A') >= 32):
            return False;
         
 
        # Current character is
        # small and previous is
        # a capital character
        elif (ord(word[i]) - ord('A') >= 32 and ord(word[i - 1]) - ord('A') < 32):
 
            # If previous char
            # is the 1st char
            if (i - 1 == 0):
                continue;
 
            return False;
         
 
    # Return true
    return True;
 
 
# Driver Code
S = "GeeKs";
print("Yes" if detectUppercaseUse(S) else "No");
 
# This code is contributed by Saurabh Jaiswal




// C# program for the above approach
using System;
class GFG
{
 
  // Function to check if uppercase
  // characters are used correctly or not
  static bool detectUppercaseUse(string word)
  {
 
    // Loop to iterate through
    // the given string S
    for (int i = 1; i < word.Length; i++) {
 
      // Current character is
      // Capital and previous
      // character is small
      if (word[i] - 'A' < 32
          && word[i - 1] - 'A' >= 32) {
        return false;
      }
 
      // Current character is
      // small and previous is
      // a capital character
      else if (word[i] - 'A' >= 32
               && word[i - 1] - 'A' < 32) {
 
        // If previous char
        // is the 1st char
        if (i - 1 == 0)
          continue;
 
        return false;
      }
    }
 
    // Return true
    return true;
  }
   
  // Driver Code
  public static void Main()
  {
    string S = "GeeKs";
    Console.Write((detectUppercaseUse(S) ? "Yes" : "No"));
 
  }
}
 
// This code is contributed by Samim Hossain Mondal.




<script>
    // JavaScript code for the above approach
 
    // Function to check if uppercase
    // characters are used correctly or not
    function detectUppercaseUse(word)
    {
     
        // Loop to iterate through
        // the given string S
        for (let i = 1; i < word.length; i++) {
 
            // Current character is
            // Capital and previous
            // character is small
            if (word[i].charCodeAt(0) - 'A'.charCodeAt(0) < 32
                && word[i - 1].charCodeAt(0) - 'A'.charCodeAt(0) >= 32) {
                return false;
            }
 
            // Current character is
            // small and previous is
            // a capital character
            else if (word[i].charCodeAt(0) - 'A'.charCodeAt(0) >= 32
                && word[i - 1].charCodeAt(0) - 'A'.charCodeAt(0) < 32) {
 
                // If previous char
                // is the 1st char
                if (i - 1 == 0)
                    continue;
 
                return false;
            }
        }
 
        // Return true
        return true;
    }
     
    // Driver Code
    let S = "GeeKs";
    document.write(detectUppercaseUse(S) ? "Yes" : "No");
 
   // This code is contributed by Potta Lokesh
</script>

 
 

Output
No

 

Time Complexity: O(N)
Auxiliary Space: O(1)

 


Article Tags :