持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第1天,点击查看活动详情
一、题目描述:
14. 最长公共前缀 - 力扣(LeetCode) (leetcode-cn.com)
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 仅由小写英文字母组成
二、思路分析:
首先,我们应该是采用平行的方式,就是每次比较每个字符串的第n个字符
所以我们的最外层循环应该是字符串的长度,而每个字符串都是不定长的,求公共
所以我们需要找到最短的字符串长度作为循环的次数,不会有比这更多的了;
然后是内循环,内循环就应该有一个字符串数组的遍历,这里就需要用到charAt(i)
它是取某个字符串的第i个字符,就是我们本题中所需要的;然后进行对比
我们此处每次都取第一个字符串的字符作为对比,一旦都相等,则就将这个字符存入,否则就返回已经对比好的值;
三、AC 代码:
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length == 0) return "";
String str = ""; //这个是用来接收这个字符串的;
int minLen = Integer.MAX_VALUE;
for(int i = 0; i < strs.length; i++) {
minLen = minLen < strs[i].length()?minLen:strs[i].length();
}
for(int i = 0; i < minLen; i++) {
char compareChar = strs[0].charAt(i);
for(String s : strs) {
if(s.charAt(i) != compareChar) {
return str;
}
}
str += strs[0].charAt(i);
}
return str;
}
}