How to Count Occurrences of a Character in String - Java Programming Example (original) (raw)

Write a program to count the number of occurrences of a character in String is one of the common programming interview questions not just in Java but also in other programming languages like C or C++. As String is a very popular topic in programming interviews and there are a lot of good programming exercises on String like "count number of vowels or consonants in String", "count number of characters in String", How to reverse String in Java using recursion or without using StringBuffer, etc, it becomes extremely important to have a solid knowledge of String in Java or any other programming language. Though, this question is mostly used to test the candidate's coding ability i.e. whether he can convert logic to code or not.

In the interview, most of the time Interviewer will ask you to write a program without using any API method, as Java is very rich and it always some kind of nice method to do the job, But it is also important to know rich Java and open source libraries for writing production-quality code.

Anyway, in this question, we will see both API-based and non-API-based (except a few) ways to count the number of occurrences of a character in String on Java.

Also, basic knowledge of essential data structure and algorithms is also very important and that's why I suggest all Java programmers join a comprehensive Data Structure and Algorithms course like Data Structures and Algorithms: Deep Dive Using Java on Udemy to improve their knowledge and algorithms skills.

Java program to count occurrences of a character in String

How to find number of occurence of character or substring in String in JavaIn this Java program, we will see a couple of ways to count, how many times a particular character is present in String. First, we'll see Spring framework’s StringUtils class and its static method countOccurrenceOf(String, character) which takes a String and character and returns occurrence of character into that String.

After that, we will see Apache commons StringUtils class for counting the occurrence of a character in String. Apache commons StringUtils provide the countMatches() method which can be used to count the occurrence of one character or substring.

Finally, we will see the most simple way of counting characters using the standard for loop and Java 5 enhanced for loop. This solution can be extended not just to finding the occurrence of character but also to finding occurrences of a substring.

Btw, if you are solving this question as part of your Java interview preparation, you can also check Cracking the Coding Interview, a collection of 189 programming questions and solutions from various programming job interviews. Your perfect companion for developing coding sense required solving these kinds of problems on interviews.

How to count occurrence of a character in String

Now, let's see the Java program to count a number of occurrences of any character on String:

import org.springframework.util.StringUtils;

/**
* Java program to count the number of occurrences of any character on String.
* @author Javin Paul
*/
public class CountCharacters {

public static void main(String args[]) {

String input = "Today is Monday"; //count number of "a" on this String.

//Using Spring framework StringUtils class for finding occurrence of another String
int count = StringUtils.countOccurrencesOf(input, "a");

System.out.println("count of occurrence of character 'a' on String: " +

" Today is Monday' using Spring StringUtils " + count);

//Using Apache commons lang StringUtils class
int number = org.apache.commons.lang.StringUtils.countMatches(input, "a");
System.out.println("count of character 'a' on String: 'Today is Monday' using commons StringUtils " + number);

//counting occurrence of character with loop
int charCount = 0;
for(int i =0 ; i<input.length(); i++){
if(input.charAt(i) == 'a'){
charCount++;
}
}
System.out.println("count of character 'a' on String: 'Today is Monday' using for loop " + charCount);

//a more elegant way of counting the occurrence of a character in String using the foreach loop

charCount = 0; //resetting character count
for(char ch: input.toCharArray()){
if(ch == 'a'){
charCount++;
}
}
System.out.println("count of character 'a' on String: 'Today is Monday' using for each loop " + charCount);
}

}

Output
count of occurrence of the character 'a' on String: 'Today is Monday' using Spring StringUtils 2
count of character 'a' on String: 'Today is Monday' using commons StringUtils 2
count of character 'a' on String: 'Today is Monday' using for loop 2
count of character 'a' on String: 'Today is Monday' using for each loop 2

Well, the beauty of this question is that the Interviewer can twist it in many ways, they can ask you to write a recursive function to count occurrences of a particular character or they can even ask to count how many times each character has appeared.

So if a String contains multiple characters and you need to store the count of each character, consider using HashMap for storing characters as keys and the number of occurrences as value. Though there are other ways of doing it as well I like the HashMap way of counting characters for simplicity.

Other programming exercises for Java programmer