最长相同前缀
写一个函数,在一个字符串数组中找出最长的相同前缀字符串,如果没有相同前缀,返回一个空字符串“”。
例:input: [“flower”,“flow”,“flight”] output:“fl”
input:[“dog”,“racecar”,“car”] output:""
我的思路:因为要找出数组中所有元素的公共最长子串,所以必要遍历所有的元素,然而,数组中的每个元素都是字符串,对字符串的判断遍历每个字符,双层循环可以得到最长的公共子串。遍历数组的同时分别比较每个元素的字符。这种方法叫“垂直扫描”
代码
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() || strs[j].charAt(i) != c)//注意防止溢出异常
return strs[0].substring(0, i);
}
return strs[0];
}
}
时间复杂度:O(S),空间复杂度:O