文字列の配列から最長の共通接頭辞を見つける関数を書きます。共通接頭辞が存在しない場合は、空の文字列を返します。
要件
["flower","flow","flight"]
出力: "fl"
["dog","racecar","car"]
出力: ""
パブリック接頭辞がない
感想です:
配列の並べ替えは、Arrays.sort(strs)並べ替えは文字順で、配列の最初の要素と文字の最後の要素を前から後ろに比較することができます。
感想
public class Main {
public static String replaceSpace(String[] strs) {
//チェック値が不正な場合は空文字列を返す
if (!checkStrs(strs)) {
return " ";
}
int len = strs.length;
StringBuilder res = new StringBuilder();
//文字列配列の要素を昇順にソートする
Arrays.sort(strs);
int m = strs[0].length;
int n = strs[len-1].length;
int num = Math.min(m, n);
for (int i = 0; i < num; i++) {
if (strs[0].charAt(i) == strs[len-1].charAt(i)) {
res.append(strs[0].charAt(i));
} else
break;
}
return res.toString();
}
private static boolean checkStrs(String[] strs) {
boolean flag = false;
if (strs != null) {
//strsを繰り返し、要素の値をチェックする
for (int i = 0; i < strs.length; i++) {
if (strs[i] != null && strs[i].length() != 0) {
flag = true;
} else {
flag = false;
break;
}
}
}
return flag;
}
public static void main(String[] args) {
String[] strs = {"customer", "car", "cat"};
System.out.println(Main.replaceSpace(strs));
}
}