Write a Java program to count the characters in each word in a given sentence?
Examples:
Input : geeks for geeks
Output :
geeks->5
for->3
geeks->5
Approach:Here we have to find out number of words in a sentence and the corresponding character count of each word.
- Here first we create an equivalent char array of given String.
- Now we iterate the char array using for loop. Inside for loop we declare a String with empty implementation.
- Whenever we found an alphabet we will perform concatenation of that alphabet with the String variable and increment the value of i.
- Now when i reaches to a space it will come out from the while loop and now String variable has the word which is previous of space.
- Now we will print the String variable with the length of the String.
Implementation:
class CountCharacterInEachWords {
static void count(String str)
{
// Create an char array of given String
char [] ch = str.toCharArray();
for ( int i = 0 ; i < ch.length; i++) {
// Declare an String with empty initialization
String s = "" ;
// When the character is not space
while (i < ch.length && ch[i] != ' ' ) {
// concat with the declared String
s = s + ch[i];
i++;
}
if (s.length() > 0 )
System.out.println(s + "->" + s.length());
}
}
public static void main(String[] args)
{
String str = "geeks for geeks" ;
count(str);
}
} |
geeks->5 for->3 geeks->5
Time Complexity: O(|S|).
Auxiliary Space: O(|S|), where |S| is the length of the input string.
Approach: Using split( ) and temp array
Steps involved:
- split the words based on spaces between the sentence.
- Store the words in the temp array.
- Now traverse the temp array and then by using length() find the length of each word.
Note : Sometimes split() function won’t work properly when splitting should be done based on some regular expressions like
OR sign (|)
question mark (?)
asterisk (*)
plus sign (+)
backslash (\)
period (.)
caret (^)
square brackets ([ and ])
dollar sign ($)
ampersand (&)
We need to specify them as split(“\\(split char)”) where (split char) would be one of the character from the above regular expression.
Below is the implementation of the above approach.
/*package whatever //do not write package name here */ import java.util.*;
class GFG {
public static void main(String[] args) {
String s= "Geeks For Geeks" ;
count(s);
}
public static void count(String s)
{
//split method splitting the string
// based on a space
String[] temp=s.split( "\\ " );
for (String t: temp)
{
// checking whether the word is not empty
if (t.length()> 0 )
System.out.println(t+ " -> " +t.length());
}
}
} //This code is contributed by aeroabrar_31 |
Geeks -> 5 For -> 3 Geeks -> 5
Time Complexity: O(|S|).
Auxiliary Space: O(|S|), where |S| is the length of the input string.