CamelCase is the sequence of one or more than one words having the following properties:
- It is a concatenation of one or more words consisting of English letters.
- All letters in the first word are lowercase.
- For each of the subsequent words, the first letter is uppercase and rest of the letters are lowercase.
Given a CamelCase sequence represented as a string. The task is to find the number of words in the CamelCase sequence.
Examples:
Input : str = “geeksForGeeks”
Output : 3
Input : str = “iGotAnInternInGeeksForGeeks”
Output : 8
Approach: As it is already known that the sequence is CamelCase, so it can be said that the number of words in the sequence will be one more than the number of uppercase letters.
- Iterate the sequence from the 2nd letter to the end of the sequence.
- No. of words will be equal to uppercase letters+1 during the 1st step iteration.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int countWords(string str)
{
int count = 1;
for ( int i = 1; i < str.length() - 1; i++) {
if ( isupper (str[i]))
count++;
}
return count;
}
int main()
{
string str = "geeksForGeeks" ;
cout << countWords(str);
return 0;
}
|
Java
class solution
{
static int countWords(String str)
{
int count = 1 ;
for ( int i = 1 ; i < str.length() - 1 ; i++) {
if (str.charAt(i)>= 65 &&str.charAt(i)<= 90 )
count++;
}
return count;
}
public static void main(String args[])
{
String str = "geeksForGeeks" ;
System.out.print( countWords(str));
}
}
|
Python3
def countWords( str ):
count = 1
for i in range ( 1 , len ( str ) - 1 ):
if ( str [i].isupper()):
count + = 1
return count
str = "geeksForGeeks" ;
print (countWords( str ))
|
C#
using System;
class GFG
{
static int countWords(String str)
{
int count = 1;
for ( int i = 1; i < str.Length - 1; i++)
{
if (str[i] >= 65 && str[i] <= 90)
count++;
}
return count;
}
public static void Main(String []args)
{
String str = "geeksForGeeks" ;
Console.Write(countWords(str));
}
}
|
Javascript
<script>
function countWords(str)
{
let count = 1;
for (let i = 1; i < str.length - 1; i++) {
if (str[i]>= 'A' && str[i]<= 'Z' )
count++;
}
return count;
}
let str = "geeksForGeeks" ;
document.write( countWords(str));
</script>
|
Time complexity: O(n)
Auxiliary space: O(1)