fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.util.stream.*;
  5. import java.lang.*;
  6. import java.io.*;
  7.  
  8. /* Name of the class has to be "Main" only if the class is public. */
  9. class Ideone
  10. {
  11.  
  12. public static String formatAsRange(List<Integer> list) {
  13. return String.format("(%d-%d)", list.get(0), list.get(list.size()-1));
  14. }
  15.  
  16. public static String consecutiveElements(int[] array, int minGroupLength) {
  17. StringBuilder sb = new StringBuilder();
  18. List<Integer> group = new ArrayList<>();
  19. for(int i = 0; i < array.length; i++) {
  20. if (i == 0 || array[i] == array[i-1] + 1) {
  21. group.add(array[i]);
  22. } else {
  23. if (group.size() >= minGroupLength) {
  24. sb.append(formatAsRange(group)).append(',');
  25. } else {
  26. var csv = group.stream().map(String::valueOf).collect(Collectors.joining(","));
  27. sb.append(csv).append(',');
  28. }
  29. group.clear();
  30. sb.append(array[i]).append(',');
  31. }
  32. }
  33. return sb.toString();
  34. }
  35.  
  36. public static void main (String[] args) throws java.lang.Exception
  37. {
  38. // your code goes here
  39. int[] arr = {-4, -2, -1, 0, 1, 3, 4, 5, 6, 9, 10, 12, 13, 14, 18};
  40. System.out.println(consecutiveElements(arr, 3));
  41. }
  42. }
Success #stdin #stdout 0.09s 48496KB
stdin
Standard input is empty
stdout
-4,-2,(-1-1),3,(4-6),9,10,12,13,14,18,