import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 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 contains = false; for (String ithString : array) { if (ithString.equals(value)) { contains = true; break; } } return contains; } /** * @param array of String objects * @return an array with identical contents in reverse order */ // TODO public static String[] reverse(String[] array) { String[] reverse = new String[array.length]; for (int i = 0; i < array.length; i++) { reverse[i] = array[array.length - 1 - i]; } return reverse; } /** * @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[] reverse = reverse(array); boolean isPalindrome = true; for (int i = 0; i < array.length; i++) { if (!array[i].equals(reverse[i])) { isPalindrome = false; break; } } return isPalindrome; } /** * @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 isPangramic = true; String alpha = "abcdefghijklmnopqrstuvwxyz"; String[] alphaArr = newArray(alpha); StringBuilder allChars = new StringBuilder(); for(String word1 : array) { allChars.append(word1); } String[] allCharsArr = newArray(allChars.toString().toLowerCase()); for (String letter1 : alphaArr) { if (!contains(allCharsArr, letter1)) { isPangramic = false; break; } } return isPangramic; } public static String[] newArray(String word) { String[] newArr = new String[word.length()]; for (int i = 0; i < word.length(); i++) { newArr[i] = "" + word.charAt(i); } return newArr; } /** * @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 occurrences = 0; for (String word : array) { if (value.equals(word)) { occurrences++; } } return occurrences; } /** * @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 numOcc = getNumberOfOccurrences(array, valueToRemove); String[] removedArr = new String[array.length - numOcc]; int i = 0; for (String word1 : array) { if (!word1.equals(valueToRemove)) { removedArr[i] = word1; i++; } } return removedArr; } public static int countDuplicated(String[] array) { int count = 0; for (int i = 1; i < array.length; i++) { if (array[i].equals(array[i - 1])) { count++; } } return count; } /** * @param array array of chars * @return array of Strings with consecutive duplicates removes */ // TODO public static String[] removeConsecutiveDuplicates(String[] array) { int totalDups = countDuplicated(array); String[] removedArr = new String[array.length - totalDups]; int index = 1; removedArr[0] = array[0]; for (int i = 1; i < array.length; i++) { if (!array[i].equals(array[i - 1])) { removedArr[index] = array[i]; index++; } } return removedArr; } /** * @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) { StringBuilder dupB = new StringBuilder(array[0]); String[] packedDupArr= new String[array.length - countDuplicated(array)]; int index = 0; for (int i = 1; i < array.length; i++) { if (array[i].equals(array[i - 1])) { dupB.append(array[i]); } else { packedDupArr[index] = dupB.toString(); dupB.setLength(0); dupB.append(array[i]); index++; } } packedDupArr[index] = dupB.toString(); return packedDupArr; } }