leetcode-13-最长公共前缀

简介: 算法题 leetcode-13-最长公共前缀

最长公共前缀

思路

输入:strs= ["flower","flow","flight"]

输出:"fl"

由用例可知,每个字符串的长度可能不同,所以可以想到,最长公共前缀一定小于这些字符串中最短的那个,可用minL表示最短长度,即每个字符串只需要遍历到minL - 1即可。在该用例值minL为4,strsSize为3

所以为了判断某个字符是否“公共”,则需要按如下次序判断:

第一趟               第二趟        第三趟

flowerflower    flower

flowflow            flow

flightflight    flight

由上可知,第趟中三个字符串的第个字符都是f,第趟的第个字符都是l,第趟的第个字符出现了不同。

由上句加粗字体可得

第一趟判断的字符为,strs[0][0],strs[1][0],strs[2][0]

第二趟判断的字符为,strs[0][1],strs[1][1],strs[2][1]                    strs[][]

第二趟判断的字符为,strs[0][2],strs[1][2],strs[2][2]

我们一搬遍历都是先行后列,而这次需要先列后行。

因此需要控制列不变,行变。

列数即字符串的长度,则最长公共前缀都小于等于minL。因此可得如下代码。

代码

char*longestCommonPrefix(char**strs, intstrsSize){
//用flag来控制前缀是否已找到,count用于表示前缀的数目,minL表示最短字符串intflag,count=0,minL=200;
for(inti=0; i<strsSize; i++)
if(strlen(strs[i]) <minL)minL=strlen(strs[i]);
for(inti=0; i<minL; i++){
flag=1;
for(intj=0; j<strsSize-1; j++){
//当flag = 0则表明最长公共前缀已经找到if(strs[j][i] !=strs[j+1][i]){
flag=0;
//两个break退出双重for循环break;
            }
        }
//flag = 1则表明strs[i][count]为公共前缀之一if(flag)count++;
elsebreak;
    }
//用'\0'来表示字符串的结束strs[0][count] ='\0';
returnstrs[0];
}

大家若有其他方法,欢迎交流。

相关文章
|
4月前
|
Python
leetcode-14:最长公共前缀
leetcode-14:最长公共前缀
26 0
|
5月前
|
机器学习/深度学习 Java
LeetCode 14. 最长公共前缀
LeetCode 14. 最长公共前缀
35 1
|
7月前
【Leetcode-13.罗马数字转整数 -14.最长公共前缀】
【Leetcode-13.罗马数字转整数 -14.最长公共前缀】
23 0
|
2月前
|
算法 Java
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
22 0
|
3月前
|
Java
LeetCode题解-最长公共前缀-Java
最长公共前缀-Java
10 0
|
4月前
leetcode-2000:反转单词前缀
leetcode-2000:反转单词前缀
26 0
leetcode-2000:反转单词前缀
|
11月前
|
算法 安全 Swift
LeetCode - #14 最长公共前缀
不积跬步,无以至千里;不积小流,无以成江海,Swift社区 伴你前行。如果大家有建议和意见欢迎在文末留言,我们会尽力满足大家的需求。
|
11月前
|
机器学习/深度学习
leetcode:14.最长公共前缀
要注意题目是要找公共前缀,不是子串,前缀的意思就是说前面必须是一样的。首先可以假设下标为0的元素就是目前找到的最长公共前缀,然后从下标1开始遍历,看看当前元素与第0个元素的公共前缀是什么,比较他们的长度,取较短的就是这次循环结束后的公共前缀了。
43 0
|
算法 Java
Java算法-LeetCode14最长公共前缀
Java算法-LeetCode14最长公共前缀
59 0
LeetCode 5867. 反转单词前缀
给你一个下标从 0 开始的字符串 word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。
60 0

热门文章

最新文章