这个题没有搞清楚要考察什么,虽然在输入参数的检查上面错了几次,但还是比较容易Accept了。
public class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
int minLength = strs[0].length();
if (minLength == 0) {
return "";
}
for (int i = 1; i < strs.length; ++i) {
String str = strs[i];
if (minLength > str.length()) {
minLength = str.length();
}
}
StringBuilder ss = new StringBuilder();
for (int i = 0; i < minLength; ++i) {
String s = strs[0];
char c = s.charAt(i);
for (int j = 1; j < strs.length; ++j) {
if (c != strs[j].charAt(i)) {
return ss.toString();
}
}
ss.append(c);
}
return ss.toString();
}
}
反思了一下,优化成如下代码,但是运行时间似乎没有太大改进。
public class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) {
return "";
}
for (int i = 0; i < strs[0].length(); ++i) {
char c = strs[0].charAt(i);
for (int j = 1; j < strs.length; ++j) {
if (i >= strs[j].length() || c != strs[j].charAt(i)) {
return strs[0].substring(0, i);
}
}
}
return strs[0];
}
}