题目
我的题解
将第一个字符串放进prefix,之后每个字符串都与prefix对比。
public class Solution {
public String longestCommonPrefix(String[] strs) {
// 防止没有输入
if (strs.length == 0) {
return "";
}
StringBuffer prefix = new StringBuffer(strs[0]);
for (int i = 1; i < strs.length; i++) {
if (prefix.length() == 0) {
return "";
}
// 如果下一个字符串长度超过prefix,则裁剪prefix
if (strs[i].length() < prefix.length()) {
prefix.delete(strs[i].length(), prefix.length());
}
for (int j = 0; j < prefix.length(); j++) {
// 当前字符串与prefix有不同的字符,则裁剪prefix
if (strs[i].charAt(j) != prefix.charAt(j)) {
prefix.delete(j, prefix.length());
}
}
}
return prefix.toString();
}
}
其他题解
以上我的方法是横向比较,还有纵向比较,即对比每个字符串的同一位值,将结果保存到prefix。
解法链接
总结
- 可以使用String的substring方法来截取,这样可以不用使用StringBuffer类
- 单线程使用StringBuilder类,多线程使用StringBuffer类为优