14、最长公共前缀
程序员文章站
2022-07-08 09:40:26
...
1、题目
2、解法
class Solution {
public String longestCommonPrefix(String[] strs) {
if (strs.length == 0) return "";
// 直接判断,另一个字符串是否包含该子字符
String prefix = strs[0];
for (int i = 1; i < strs.length; i++) {
// 因为是最长公共前缀,所以应该从0开始
// 找不到的话返回-1
while (strs[i].indexOf(prefix) != 0) {
// 如果不包含,那我减少一位,再看
prefix = prefix.substring(0, prefix.length() - 1);
if(prefix.isEmpty()) return "";
}
}
return prefix;
}
}
时间复杂度O(n), 假设n个字符串都有相同位的话,就需要比n次,空间复杂度为O(1)
3、我的思考
@两个两个比较,然后通过indexOf找相同位,没有找到,字符串长度减1
@String []数组长度为length, int []和String的长度为length()