package test1; /** * A utility class for working with strings. * */ public class StringUtil { private StringUtil() { } /** * The version of this test. */ public static final String TEST_VERSION = "C"; /** * Returns the string formed by concatenating the argument * strings s and t with a separator string between them. * For example: * *
* Utility2B.join("abc", "xyz", ":") ** * returns the string
"abc:xyz"
.
*
* @param s a non-null string
* @param t a non-null string
* @param sep a non-null separator string
* @return the string formed by concatenating s followed by
* sep followed by t
*/
public static String join(String s, String t, String sep) {
return s + sep + t;
}
/**
* Returns the shortest of the two strings s and t. For example,
* shortest("python", "java")
returns the string
* "java"
because the string "java"
is shorter
* than the string "python"
.
*
* @param s a non-null string
* @param t a non-null string
* @return the shortest of the two strings s and t
* @throws IllegalArgumentException if s and t have the same length
*/
public static String shortest(String s, String t) {
if (s.length() == t.length()) {
throw new IllegalArgumentException();
}
if (s.length() < t.length()) {
return s;
}
return t;
}
/**
* Computes the number of characters that are different in
* two strings of equal length. The strings are compared
* character by character and the number of characters that
* differ is returned. For example:
*
* * distance("talk", "talk") returns 0 * distance("talk", "walk") returns 1 * distance("well", "walk") returns 2 * distance("pick", "walk") returns 3 * distance("zzzz", "walk") returns 4 ** * @param s a non-null string * @param t a non-null string * @return the number of characters that differ between s and t * @pre. s.length() == t.length() */ public static int distance(String s, String t) { int d = 0; for (int i = 0; i < s.length(); i++) { if (s.charAt(i) != t.charAt(i)) { d++; } } return d; } /** * Returns the character that appears most frequently in the * string s. You may assume that only one character appears most * frequently in s. * * @param s a string * @return the character that appears most frequently in the * string s * @pre. s.length() is at least 1 */ public static char mostFrequentChar(String s) { int max = 1; char cmax = s.charAt(0); for (int i = 0; i < s.length(); i++) { int ct = 0; char ci = s.charAt(i); for (int j = 0; j < s.length(); j++) { if (s.charAt(j) == ci) { ct++; } } if (ct > max) { max = ct; cmax = ci; } } return cmax; } }