题目描述
答题
前两种情况保证健壮性
科普
{}一维空字符串数组的长度为0
{{}}二维空字符串数组长度为1
package ffff;
public class LongPre {
public String longestCommonPrefix(String[] strs) {
int len = strs.length;
// 第一种情况:空数组
if (len == 0)
return "无";
// 第二种情况:数组中只有一个字符串
if (len == 1)
return strs[0];
// 第三种情况:正常情况
// 1. 先默认第一个字符串为公共前缀
String s_prefix = strs[0];
// 2,数组的元素依次与“公共前缀”进行比较
for (int i = 0; i < len; i++) {
// 3.当数组的元素不是以“公共前缀”开头时,截掉“公共前缀”的后面多余字母
if (!strs[i].startsWith(s_prefix)) {
s_prefix = s_prefix.substring(0, s_prefix.length() - 1);
// 4.还让这个数组元素进行比较;
// [直至前缀一样,才让下一个数组元素比较]
// [如果与第二个还没有匹配到前缀,"公共前缀"已经截取到没有了,后面的字符串也不用匹配了]
i--;
System.out.println(s_prefix);
}
}
return s_prefix;
}
public static void main(String[] args) {
LongPre longPre = new LongPre();
String[] strs = { "flower", "flow", "flight" };
System.out.println(longPre.longestCommonPrefix(strs));
}
}