在leetcode(https://leetcode-cn.com/)上看到一道有趣的算法题:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
示例 2:
输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。
这样的题你会怎么用java实现呢?
分享一下我的解题思路:
public String longestCommonPrefix(String[] strs) {
int minLength = 0;
int length = strs.length;
for (int i = 0; i < length; i++) {
if (i == 0) {
minLength = strs[i].length();
} else {
minLength = Math.min(minLength, strs[i].length());
}
}
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < minLength; i++) {
char value = strs[0].charAt(i);
for (int y = 1; y < length; y++) {
if (strs[y].charAt(i) != value) {
return buffer.toString();
}
}
buffer.append(value);
}
return buffer.toString();
}
结果:
输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”
leetcode上对该答案的分析如下:
123 / 123 个通过测试用例
状态:通过
执行用时: 1 ms
内存消耗: 36.7 MB
执行用时分布图表
执行消耗内存分布图表
大家有更好的解题思路吗?欢迎在评论区作答哈~
有问题也可发送至:1966353889@qq.com
欢迎交流,共同进步。