[字符串]最长公共前缀

124 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

问题

给你一个大小为 n 的字符串数组 strs ,其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀,返回这个公共前缀。

思路

遍历字符串数组中的所有字符串,从所有字符串的首元素开始逐个字符串遍历,只有当所有字符串的同一个位置的元素相同时,才能算是公共前缀。

代码实现

class Solution {
public:
    /**
     * 
     * @param strs string字符串vector 
     * @return string字符串
     */
    string longestCommonPrefix(vector<string>& strs) {
        // write code here
        if (strs.size() == 0) return "";
        if (strs.size() == 1) return strs[0];
        string ret;
        int i,j;
        int minLen = strs[0].size();
        // 计算最小长度的字符串
        for (int i = 1; i < strs.size(); i++)
        {
            minLen > strs[i].size()?strs[i].size():minLen;
        }
        for (i = 1, j = 0; i < strs.size(), j < minLen; i++)
        {
            if (strs[i][j] == strs[i - 1][j])
            {
                 // 添加公共元素
                if (i == strs.size() - 1)
                {
                    ret += strs[i][j];
                    i = 0;
                    j++;
                }
            }
            else
            {
                break;
            }
        }
        return ret;
    }
};