开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 天,点击查看活动详情
【java算法刷题 20-2】leetcode:题目14. 最长公共前缀。
坚持就是胜利!
题目、14. 最长公共前缀
原题链接:14. 最长公共前缀
题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
/
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
.解释:输入不存在公共前缀。
解题思路:
题目要求返回字符串数组中元素的最长公共前缀,那么我们可以将每一个字符串元素的相同位置字符进行比较:
全部相同则继续向后比较。 字符串相同位置的字符不等,返回最长公共前缀,即前面遍历过的字符串字符。 当某个字符串元素被完全遍历完,说明它就是最长公共前缀。
按照上述思路,问题就解决了。
提交代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
int n = strs.length; //获取字符串数组长度
if(strs == null || n == 0) return "";//为空或没有元素,返回空字符串
int count = strs[0].length(); //获取首字符串元素的长度
for(int i = 0;i < count;++i){ //遍历字符串数组
char c = strs[0].charAt(i); //记录首字符串元素的各个字符
for(int j = 1;j < n;++j){ //遍历各字符串元素相同位置的字符
//当遇到不相同额字符 或 某个字符串元素被遍历完
if(i == strs[j].length() || strs[j].charAt(i) != c)
//返回当前长度的公共前缀
return strs[0].substring(0, i);
}
}
return strs[0];//如果元素长度为1,直接返回
}
}
提交结果: