【LeetCode】LeetCode刷题(12)【简单】最长公共前缀(C++)

1

最长公共前缀

题目链接——最长公共前缀 在这里插入图片描述

代码示例:

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
       //容器为空
       if(strs.size() == 0)
       {
           return "";
       }

       for (int i = 0; i < strs[0].size(); i++) 
       {
            char ch = strs[0][i];
            for (int j = 1; j < strs.size();j++) 
            {
                if (strs[j][i] != ch || i > strs[j].size()) 
                {
                    return strs[0].substr(0, i);
                }
            }
        }
        //全都一样
        return strs[0];
    }
};

题解:

垂直比较。
如果容器为空,返回“”

不为空
以容器中第一个字符串为标准,将它的每个字母和容器中其它字符串的每一个字母做比较,
如果不同或者此时遍历的长度i,已经大于了其他某个字符串的长度,
那么直接返回第一个字符串截取到上一个i,这么长。
substr截取区间为左闭右开。

容器中字符串全都相等,或者只有一个元素
返回本身(第一个字符串)。