Character with Longest Consecutive Repetition in Java

The challenge

For a given string s find the character c (or C) with longest consecutive repetition and return:

Object[]{c, l};
Code language: Java (java)

where l (or L) is the length of the repetition. If there are two or more characters with the same l return the first in order of appearance.

For empty string return:

Object[]{"", 0}
Code language: Java (java)

Test cases

import org.junit.Test; import static org.junit.Assert.assertArrayEquals; import org.junit.runners.JUnit4; public class SolutionTest { @Test public void exampleTests() { assertArrayEquals(new Object[]{"a", 4}, Solution.longestRepetition("aaaabb")); assertArrayEquals(new Object[]{"a", 4}, Solution.longestRepetition("bbbaaabaaaa")); assertArrayEquals(new Object[]{"u", 3}, Solution.longestRepetition("cbdeuuu900")); assertArrayEquals(new Object[]{"b", 5}, Solution.longestRepetition("abbbbb")); assertArrayEquals(new Object[]{"a", 2}, Solution.longestRepetition("aabb")); assertArrayEquals(new Object[]{"", 0}, Solution.longestRepetition("")); } }
Code language: Java (java)

The solution in java

Option 1:

public class Solution { public static Object[] longestRepetition(String s) { int len = s.length(); int count = 0; if (len==0) return new Object[]{"", 0}; char res = s.charAt(0); for (int i=0; i<len; i++) { int cur_count = 1; for (int j=i+1; j<len; j++) { if (s.charAt(i) != s.charAt(j)) break; cur_count++; } if (cur_count > count) { count = cur_count; res = s.charAt(i); } } return new Object[]{Character.toString(res), count}; } }
Code language: Java (java)

Option 2:

public class Solution { public static Object[] longestRepetition(String s) { char lastch = '\0'; Object ret[] = new Object[]{"", 0}; int n = 0, max = 0; for (char c : s.toCharArray()) { n = lastch == c ? ++n : 1; if (n > max) { ret = new Object[]{""+c,n}; max = n; } lastch = c; } return ret; } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments