StringUtils - nise-nabe/topcoder GitHub Wiki

	static class StringUtils {
		public static char[][] toCharArray(String[] strs) {
			int n = strs.length;
			char[][] cs = new char[n][];
			for (int k = 0; k < n; ++k) {
				cs[k] = strs[k].toCharArray();
			}
			return cs;
		}
		
		public static String reverse(String str) {
			return new StringBuilder(str).reverse().toString();
		}

		public int lis(String input, BiFunction<Character, Character, Boolean> f) {
			int n = input.length() + 1, lens[] = new int[n];
			char[] cs = new char[n];
			System.arraycopy(input.toCharArray(), 0, cs, 1, input.length());
			for (int i = 1; i < n; ++i) {
				for (int j = 0; j < i; ++j) {
				if (f.apply(cs[j], cs[i])) {
						lens[i] = Math.max(lens[i], 1 + lens[j]);
					}
				}
			}
			return java.util.Arrays.stream(lens).max().getAsInt();
		}
	}