Q:
Write a function to find the longest common prefix string amongst an array of strings.
Analysis:
先将字符串数组按每个元素的长度从小到大排序,然后用二重循环直接依次判断各个字符数组元素的字符和最短的字符串中的各个字符是否相等并返回。
Code:
public class Solution {
public String longestCommonPrefix(String[] strs) {
int length = Integer.MAX_VALUE;
StringBuffer result = new StringBuffer();
// 若字符串数组为空或长度为0,直接返回空串
if (strs.length == 0 || strs == null) {
return "";
}
// 若字符串数组只有一个元素,返回该元素
if (strs.length == 1) {
return strs[0];
}
// 如果有空字符串,则直接返回空字符串
for (int i = 0; i < strs.length; i++) {
if ("".equals(strs[i])) {
return "";
}
}
// 选择排序,将最短的字符串放到索引为0的位置
for (int i = 0; i < strs.length; i++) {
for (int j = i + 1; j < strs.length; j++) {
if (strs[j].length() < strs[i].length()) {
String temp = strs[j];
strs[j] = strs[i];
strs[i] = temp;
}
}
}
length=strs[0].length();
// 二重循环判断,遍历字符串数组,找到最长公共子序列LCS
for (int i = 0; i < length; i++) {
for (int j = 0; j < strs.length; j++) {
if (strs[j].charAt(i) != strs[0].charAt(i)) {
return result.toString();
}
}
result.append(strs[0].charAt(i));
}
return result.toString();
}
}