zoukankan      html  css  js  c++  java
  • LeetCode 14. 最长公共前缀(Longest Common Prefix)

    题目描述

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

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

    示例 1:

    输入: ["flower","flow","flight"]
    输出: "fl"
    

    示例 2:

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

    说明:

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

    解题思路

    首先定义一个查找公共前缀的函数comPre,从两个字符串的首字符开始比较,若对应字符相等就将其加到结果中,这样遍历直到字符不相等或者走到任意一个字符串末尾。

    回到原题目,首先把最长公共前缀定义为第一个字符串,接着从第二个字符串开始,依次查找最长公共前缀与当前字符串的最长公共前缀,直到字符串数组末尾,最后求得的最长公共前缀即为结果。

    代码

     1 class Solution {
     2 public:
     3     string longestCommonPrefix(vector<string>& strs) {
     4         if(strs.empty())
     5             return "";
     6         string longPre = strs[0];
     7         for(int i = 1; i < strs.size(); i++){
     8             longPre = comPre(longPre, strs[i]);
     9         }
    10         return longPre;
    11     }
    12     string comPre(string s1, string s2){
    13         int i = 0;
    14         string comPre = "";
    15         while(i < s1.size() && i < s2.size()){
    16             if(s1[i] == s2[i])
    17                 comPre += s1[i];
    18             else break;
    19             i++;
    20         }
    21         return comPre;
    22     }
    23 };
  • 相关阅读:
    田忌赛马 题解
    亚历山大的丢番图方程 题解
    zhx's contest题解
    芝麻OI比赛T7edges题解
    CSP-J2020游记
    Linux shell 学习笔记(五)
    Linux shell 学习笔记(四)
    Linux shell 学习笔记(三)
    Linux shell 学习笔记(二)
    Oracle并发
  • 原文地址:https://www.cnblogs.com/wmx24/p/9147545.html
Copyright © 2011-2022 走看看