14. 最长公共前缀

2021-08-24  本文已影响0人  gykimo

题目:https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

我的方法一:直接遍历

步骤

  1. 判断第2及后面的string每个位置上的字符是否和第一个字符串对应位置的字符一样,如果一样那么这个字符就是公共前缀

初始条件

  1. 从第一个字符串的第0个字符开始比较

边界条件

  1. 如果字符串个数0,直接返回“”
  2. 如果字符串个数1,那么直接返回第1个字符串
  3. 判断某个字符串的第N位时,需要判断N是否超过了字符串的长度

复杂度

时间:O(n),遍历一遍
空间:O(1)

代码

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        int size = strs.size();
        string ret;

        if(size == 0) {
            return ret;
        }else if(size == 1) {
            return strs[0];
        }

        int index = 0;
        while(true){
            if(strs[0].size() <= index) {
                return ret;
            }

            for(int i = 1; i<size; i++){
                if(strs[i].size() <= index) {
                    return ret;
                }else if(strs[i][index] != strs[0][index]) {
                    return ret;
                }
            }

            ret.push_back(strs[0][index]);
            index++;
        }

        return ret;
    }
};
上一篇下一篇

猜你喜欢

热点阅读