How to Count Consecutive Characters in Java

The challenge

Given a string s, the power of the string is the maximum length of a non-empty substring that contains only one unique character.

Return the power of the string.

Example 1:

Input: s = "meetme"
Output: 2
Explanation: The substring "ee" is of length 2 with the character 'e' only

Example 2:

Input: s = "abbcccddddeeeeedcba"
Output: 5
Explanation: The substring "eeeee" is of length 5 with the character 'e' only.

Example 3:

Input: s = "triplepillooooow"
Output: 5

Example 4:

Input: s = "hooraaaaaaaaaaay"
Output: 11

Example 5:

Input: s = "tourist"
Output: 1

Constraints:

  • 1 <= s.length <= 500
  • s contains only lowercase English letters.

The solution in Java code

We could look at something like this:

class Solution { public int maxPower(String s) { int max = 1; for(int i=0,j=1; j<s.length(); j++){ if(s.charAt(i)!=s.charAt(j)){ max = Math.max(j-i,max); i=j; } } return Math.max(j-i,max); } }
Code language: Java (java)

But in cases like eeeee, we would expect a return of 5, but would instead get 1 back.

So let’s revisit:

class Solution { public int maxPower(String s) { int max = 1; int cnt = 1; char prv = s.charAt( 0 ); for( int i = 1; i < s.length(); i++) { if( prv == s.charAt( i ) ) { max = Math.max( ++cnt, max ); continue; } prv = s.charAt( i ); cnt = 1; } return max; } }
Code language: Java (java)

A possible third option would be to do something like this:

class Solution { public int maxPower(String s) { int max=1; for(int i=1; i<s.length(); i++){ int count=1; while(i < s.length() && s.charAt(i-1) == s.charAt(i)){ count++; i++; max=Math.max(count, max); } } return max; } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments