import java.util.Arrays; /** * 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) { boolean output = false; for (String element : array) { if (element.equals(value)) { output = true; } } return output; } /** * @param array of String objects * @return an array with identical contents in reverse order */ // TODO public static String[] reverse(String[] array) { String[] reversedArray = new String[array.length]; for (int i=array.length-1; i >= 0; i--) { reversedArray[array.length-1-i] = array[i]; } return reversedArray; } /** * @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) { boolean output = false; String[] reversedArray = reverse(array); if (Arrays.equals(array, reversedArray)) { output = true; } return output; } /** * @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) { boolean outcome = true; String[] arrayGiven = new String[1]; arrayGiven[0]=""; for (int i=0; i < array.length; i++) { arrayGiven[0] = arrayGiven[0].concat(array[i]); } arrayGiven = arrayGiven[0].toLowerCase().split(""); for (char alph = 'a'; alph <= 'z'; alph++) { if (contains(arrayGiven, String.valueOf(alph))==false) { outcome = false; } } return outcome; } /** * @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 counter = 0; for (String element : array) { if (element.equals(value)) { counter++; } } return counter; } /** * @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) { int numberOfElementsToDelete = getNumberOfOccurrences(array, valueToRemove); String[] arrayWithRemovedValue = new String[array.length-numberOfElementsToDelete]; int j=0; //index of arrayWithRemovedValue for (int i=0; i < array.length; i++) { if (array[i].compareTo(valueToRemove) != 0) { arrayWithRemovedValue[j] = array[i]; j++; } } return arrayWithRemovedValue; } /** * @param array array of chars * @return array of Strings with consecutive duplicates removes */ // TODO public static String[] removeConsecutiveDuplicates(String[] array) { int numberOfElementsToDelete = 0; int j=0; //index of arrayWithRemovedVConsecutiveDuplicates String[] arrayWithRemovedConsecutiveDuplicates = new String[array.length]; for (int i=0; i < array.length-1; i++) { if (array[i].compareTo(array[i+1]) != 0) { arrayWithRemovedConsecutiveDuplicates[j] = array[i]; j++; } else { numberOfElementsToDelete++; } } arrayWithRemovedConsecutiveDuplicates = Arrays.copyOf(arrayWithRemovedConsecutiveDuplicates, array.length-numberOfElementsToDelete); arrayWithRemovedConsecutiveDuplicates[arrayWithRemovedConsecutiveDuplicates.length-1] = array[array.length-1]; return arrayWithRemovedConsecutiveDuplicates; } /** * @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) { String[] arrayWithPackedConsecutiveDuplicates = new String[array.length]; int j=0; //index of arrayWithPackedVConsecutiveDuplicates int numberOfElementsToDelete = 0; arrayWithPackedConsecutiveDuplicates[0] = array[0]; for (int i=0; i < array.length-1; i++) { if (array[i].compareTo(array[i+1]) == 0) { arrayWithPackedConsecutiveDuplicates[j] = arrayWithPackedConsecutiveDuplicates[j] + array[i+1]; numberOfElementsToDelete++; } else { arrayWithPackedConsecutiveDuplicates[j+1] = array[i+1]; j++; } } arrayWithPackedConsecutiveDuplicates = Arrays.copyOf(arrayWithPackedConsecutiveDuplicates, array.length-numberOfElementsToDelete); return arrayWithPackedConsecutiveDuplicates; } }