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) { for(String x : array) { if(value.equals(x)) { return true; } } return false; } /** * @param array of String objects * @return an array with identical contents in reverse order */ // TODO public static String[] reverse(String[] array) { String[] reverseArr = new String[array.length]; for(int i = 0; i < array.length; i++){ reverseArr[i] = array[array.length - i - 1]; } return reverseArr; } /** * @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) { String[] reverseArr = reverse(array); String[] regArr = new String[array.length]; for(int i= 0; i < array.length; i++){ regArr[i] = array[i]; if(regArr[i] == reverseArr[i]) { return true; } } return false; } /** * @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 alphabet = "abcdefghijklmnopqrstuvwxyz"; String fullCombinedString = String.join("", array).toLowerCase(); for(char c : alphabet.toCharArray()) { if(fullCombinedString.indexOf(c) < 0) { return false; } } return true; /* for(char c : alphabet.toCharArray()) { boolean found = false; for(String word : array) { word = word.toLowerCase(); if(word.indexOf(c) >= 0) found = true; break; } if(!found) { return false; } } return true;*/ } /** * @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 s : array) { if(s == value) { count++; } } 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) { List newArray = new ArrayList<>(); for(String s : array) { if(s != valueToRemove) { newArray.add(s); } } return newArray.toArray(new String[] {}); } /** * @param array array of chars * @return array of Strings with consecutive duplicates removes */ // TODO public static String[] removeConsecutiveDuplicates(String[] array) { List newArray = new ArrayList<>(); for(int i = 0; i < array.length; i++) { String added = array[i]; newArray.add(added); int toRemove = 0; for(; toRemove + i + 1 < array.length; toRemove++) { if(array[i + 1 + toRemove] != added){ break; } } i += toRemove; } return newArray.toArray(new String[] {}); } /** * @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) { List newArray = new ArrayList<>(); for(int i = 0; i < array.length; i++) { String added = array[i]; String toAdd = added; int toRemove = 0; for(; toRemove + i + 1 < array.length; toRemove++) { if(array[i + 1 + toRemove] != added){ break; } toAdd += array[i + 1 + toRemove]; } newArray.add(toAdd); i += toRemove; } System.out.println(Arrays.toString(newArray.toArray())); return newArray.toArray(new String[] {}); } }