import java.util.*; /** * Created by leon on 1/29/18. */ public class StringArrayUtils { /** * @param array array of String objects * @return first element of specified array */ // TODO public static String getFirstElement(String[] array) { return array[0]; } /** * @param array array of String objects * @return second element in specified array */ public static String getSecondElement(String[] array) { return array[1]; } /** * @param array array of String objects * @return last element in specified array */ // TODO public static String getLastElement(String[] array) { return array[array.length - 1]; } /** * @param array array of String objects * @return second to last element in specified array */ // TODO public static String getSecondToLastElement(String[] array) { return array[array.length - 2]; } /** * @param array array of String objects * @param value value to check array for * @return true if the array contains the specified `value` */ // TODO public static boolean contains(String[] array, String value) { return Arrays.asList(array).contains(value); } /** * @param array of String objects * @return an array with identical contents in reverse order */ // TODO public static String[] reverse(String[] array) { int length = array.length; String[] result = new String[length]; for (int i = 0; i < length; i++) { result[i] = array[(length - 1) - i]; } return result; } /** * @param array array of String objects * @return true if the order of the array is the same backwards and forwards */ // TODO public static boolean isPalindromic(String[] array) { return Arrays.equals(array, reverse(array)); } /** * @param array array of String objects * @return true if each letter in the alphabet has been used in the array */ // TODO public static boolean isPangramic(String[] array) { String[] alpha = {"a","b","c","d","e","f","g","h","i","j", "k","l","m","n","o","p","q","r","s","t", "u","v","w","x","y","z"}; String s = ""; int count = 0; for (String e : array) { s += e.replace(" ", ""); } String[] check = s.toLowerCase().split(""); for (String letter : alpha) { if (contains(check, letter)) count++; } return count == alpha.length; } /** * @param array array of String objects * @param value value to check array for * @return number of occurrences the specified `value` has occurred */ // TODO public static int getNumberOfOccurrences(String[] array, String value) { int count = 0; for (String i : array) { count += (i == value) ? 1 : 0; } return count; } /** * @param array array of String objects * @param valueToRemove value to remove from array * @return array with identical contents excluding values of `value` */ // TODO public static String[] removeValue(String[] array, String valueToRemove) { ArrayList result = new ArrayList<>(); for (String s : array) { if (!s.equals(valueToRemove)) result.add(s); } return result.toArray(new String[result.size()]); } /** * @param array array of chars * @return array of Strings with consecutive duplicates removes */ // TODO public static String[] removeConsecutiveDuplicates(String[] array) { ArrayList result = new ArrayList<>(); for (int i = 0; i < array.length - 1; i++) { if (!array[i].equals(array[i + 1])) result.add(array[i]); } result.add(array[array.length - 1]); return result.toArray(new String[result.size()]); } /** * @param array array of chars * @return array of Strings with each consecutive duplicate occurrence concatenated as a single string in an array of Strings */ // TODO public static String[] packConsecutiveDuplicates(String[] array) { ArrayList result = new ArrayList<>(); StringBuilder addMe = new StringBuilder(); for (int i = 0; i < array.length - 1; i++) { if (!array[i].equals(array[i + 1])) { addMe.append(array[i]); result.add(addMe.toString()); addMe = new StringBuilder(); } else { addMe.append(array[i]); } } addMe.append(array[array.length - 1]); result.add(addMe.toString()); return result.toArray(new String[result.size()]); } }