飞道的博客

LeetCode 14.最长公共前缀(字符串)

407人阅读  评论(0)

上一篇博客:Leetcode 13.罗马数字转整数(字符串)

 写在前面:大家好!我是ACfun,我的昵称来自两个单词Acceptedfun。我是一个热爱ACM的蒟蒻。最近萌生了刷LeetCode的想法,所以我打算从LeetCode简单的题目开始做起,攻陷LeetCode。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭!
用知识改变命运,用知识成就未来!加油 (ง •̀o•́)ง (ง •̀o•́)ง

原题链接:LeetCode 14.最长公共前缀

题目信息

题目描述

 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""

示例

示例 1

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

示例 2

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

说明

 所有输入只包含小写字母 a-z

题解

解题思路

 最简单的思路就是从前往后循环遍历每一个字符串的每一位,使用两重循环,第一重循环 i 用来记遍历的字符串的第几位,第二重循环 j 用来记录遍历到第几个字符串。 依次将每一个字符串的每一位与第一个字符串对应位置的字符进行比较,如果当前位置所有的字符都相同那么就将其加入到返回结果 ans 中,否则就直接将当前 ans 中的值return,因为已经遇到不同的字符了,说明当前的 ans 就是最长的公共前缀了。

 还有一种情况就是遇到更短的字符串的时候,也说明当前的 ans 就是最长的公共前缀,此时也直接return ans;即可。还要特别注意输入字符串为空的情况,如果 strs 是一个空的vector,那么我们直接返回空的 ans 即可。所以在进行遍历之前我们需要首先特判一下 strs 是否为空。

解题代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string ans = "";
        if (strs.empty()) return ans;
        for (int i = 0; i < strs[0].size(); i++) {
            char ch = strs[0][i];
            for (int j = 0; j < strs.size(); j++) {
                if (strs[j].size() <= i || strs[j][i] != ch) {
                    return ans;
                }
            }
            ans += ch;
        }
        return ans;
    }
};

提交情况


未完待续,持续更新中……


转载:https://blog.csdn.net/qq_41575507/article/details/108035699
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场