力扣--14. 最长公共前缀(简单题)直接遍历

力扣--14. 最长公共前缀(简单题)直接遍历

  • 【题目描述】
  • 【样例】
  • 【思路】
  • 【代码】


今天是第二题,也是一道简单题,直接遍历。

【题目描述】

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

【样例】

示例 1:

输入:strs = [“flower”,“flow”,“flight”]
输出:“fl”

示例 2:

输入:strs = [“dog”,“racecar”,“car”]
输出:""
解释:输入不存在公共前缀。

原题链接:https://leetcode-cn.com/problems/longest-common-prefix

【思路】

题目要求一个字符串数组中所有字符串的最长公共前缀。通过示例和简单的分析,可以知道,当数组的长度为0,答案一定是空字符串;而当数组长度为1的时候,答案就是那个唯一的字符串,因此可以先列出这两种特殊情况。

而后,对于一般情况,可以先选取数组的第一个字符串做为比较的基础。将它和后面的所有字符串,在每个字符上挨个比较。
基于这样的思路,我写了代码,但是发现结果不对劲,找了半天,终于发现,应该先遍历每个字符,在进行每个字符的比较时,遍历数组中的每个字符串。如果发现要比较的那个字符串长度不足或者字符不一致,则可以直接返回结果。如果字符一致,则可以暂存在temp中,遍历完数组中的所有字符串后,添加到答案的尾部。

下面是运行结果:
力扣--14. 最长公共前缀(简单题)直接遍历_第1张图片

【代码】

最后附上自己的代码,由于第一次遍历顺序写反了,后面也没有修改,导致j在外层,i在内层。

class Solution {
public:
    string longestCommonPrefix(vector& strs) {
        if(strs.size()==0){ //当数组的长度为0,答案一定是空字符串
            return "";
        }
        else if(strs.size()==1){//当数组长度为1的时候,答案就是那个唯一的字符串
            return strs[0];
        }
        string ans="";//初始化为空字符串
        string str=strs[0]; //选取第一个做为基准
        for(int j=0;j

你可能感兴趣的:(力扣,leetcode,字符串)