Consecutive strings in Java

The challenge

You are given an array(list) strarr of strings and an integer k. Your task is to return the first longest string consisting of k consecutive strings taken in the array.

Examples

strarr = ["tree", "foling", "trashy", "blue", "abcdef", "uvwxyz"], k = 2 Concatenate the consecutive strings of strarr by 2, we get: treefoling (length 10) concatenation of strarr[0] and strarr[1] folingtrashy (" 12) concatenation of strarr[1] and strarr[2] trashyblue (" 10) concatenation of strarr[2] and strarr[3] blueabcdef (" 10) concatenation of strarr[3] and strarr[4] abcdefuvwxyz (" 12) concatenation of strarr[4] and strarr[5] Two strings are the longest: "folingtrashy" and "abcdefuvwxyz". The first that came is "folingtrashy" so longest_consec(strarr, 2) should return "folingtrashy". In the same way: longest_consec(["zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"], 2) --> "abigailtheta"
Code language: PHP (php)

n being the length of the string array, if n = 0 or k > n or k <= 0 return “”.

Note

consecutive strings : follow one after another without an interruption

The solution in Java code

Option 1:

class LongestConsec { public static String longestConsec(String[] strarr, int k) { if (strarr.length == 0 || k > strarr.length || k <= 0) return ""; String longestStr = ""; for (int index = 0; index < strarr.length - k + 1; index++) { StringBuilder sb = new StringBuilder(); for (int i = index; i < index + k; i++) { sb.append(strarr[i]); } if (sb.toString().length() > longestStr.length()) { longestStr = sb.toString(); } } return longestStr; } }
Code language: Java (java)

Option 2:

import java.util.Arrays; import java.util.Comparator; import java.util.stream.Collectors; import java.util.stream.IntStream; class LongestConsec { public static String longestConsec(String[] strarr, int k) { if (k <= 0) { return ""; } return IntStream.rangeClosed(0, strarr.length - k) .mapToObj(i -> Arrays.stream(strarr, i, i + k).collect(Collectors.joining())) .max(Comparator.comparingInt(String::length)) .orElse(""); } }
Code language: Java (java)

Option 3:

class LongestConsec { public static String longestConsec(String[] strarr, int k) { if(k < 1 || strarr.length < k || strarr.length == 0){ return ""; } int startIndex = 0; int max = strarr[0].length(); int sum = 0; for(int i = 0; i < strarr.length; i++){ sum += strarr[i].length(); if(i > k - 1){ sum -= strarr[i - k].length(); } if(sum > max){ max = sum; startIndex = i - k + 1; } } String result = ""; for (int i = startIndex; i < startIndex + k; i++){ result += strarr[i]; } return result; } }
Code language: Java (java)

Test cases to validate our solution

import static org.junit.Assert.*; import org.junit.Test; public class LongestConsecTest { private static void testing(String actual, String expected) { assertEquals(expected, actual); } @Test public void test() { System.out.println("longestConsec Fixed Tests"); testing(LongestConsec.longestConsec(new String[] {"zone", "abigail", "theta", "form", "libe", "zas", "theta", "abigail"}, 2), "abigailtheta"); testing(LongestConsec.longestConsec(new String[] {"ejjjjmmtthh", "zxxuueeg", "aanlljrrrxx", "dqqqaaabbb", "oocccffuucccjjjkkkjyyyeehh"}, 1), "oocccffuucccjjjkkkjyyyeehh"); testing(LongestConsec.longestConsec(new String[] {}, 3), ""); testing(LongestConsec.longestConsec(new String[] {"itvayloxrp","wkppqsztdkmvcuwvereiupccauycnjutlv","vweqilsfytihvrzlaodfixoyxvyuyvgpck"}, 2), "wkppqsztdkmvcuwvereiupccauycnjutlvvweqilsfytihvrzlaodfixoyxvyuyvgpck"); testing(LongestConsec.longestConsec(new String[] {"wlwsasphmxx","owiaxujylentrklctozmymu","wpgozvxxiu"}, 2), "wlwsasphmxxowiaxujylentrklctozmymu"); testing(LongestConsec.longestConsec(new String[] {"zone", "abigail", "theta", "form", "libe", "zas"}, -2), ""); testing(LongestConsec.longestConsec(new String[] {"it","wkppv","ixoyx", "3452", "zzzzzzzzzzzz"}, 3), "ixoyx3452zzzzzzzzzzzz"); testing(LongestConsec.longestConsec(new String[] {"it","wkppv","ixoyx", "3452", "zzzzzzzzzzzz"}, 15), ""); testing(LongestConsec.longestConsec(new String[] {"it","wkppv","ixoyx", "3452", "zzzzzzzzzzzz"}, 0), ""); } }
Code language: Java (java)
Tags:
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments