解法一:纵向扫描
- 将字符串数组看作一个二维空间,每一次从第一列开始。
- 确定所有字符子串中第一列字符。
- 逐层扫描后面每一列,遇到不同字符停止扫描。
- 图解:
Java参考代码:
import java.util.*;
public class Solution {
/**
*
* @param strs string字符串一维数组
* @return string字符串
*/
public String longestCommonPrefix (String[] strs) {
// //纵向扫描
if(strs.length==0 || strs==null){
return "";
}
int rows = strs.length;
int cols = strs[0].length();
//开始扫描
for(int i=0;i<cols;i++){
char firstChar = strs[0].charAt(i);
for(int j=1;j<rows;j++){
if(strs[j].length()==i || strs[j].charAt(i)!=firstChar){
return strs[0].substring(0,i);
}
}
}
return strs[0];
}
} 复杂度分析:
时间复杂度:O(M*N) 其中 M 是字符串

京公网安备 11010502036488号