LeetCode 14 Longest Common Prefix(最长公共前缀)(String)

思路优化,本来是把第一个字符串的长度作为初始预估prefix值。后来看到别人写的,还是觉得提前循环一遍,找到最短的字符串的长度作为prefix的长度预估值。

双层循环:

外层循环,用下图横着做,开始都是str[j][0]---str[j][1]---str[j][minlen-1]

内层循环,用下图竖着做,大家都是第一个字符,看看一样吗,不一样则break。

                     如果跳出的循环式i==len,就是说是自然遍历完全后退出,因此在结果字符串上增加当前指向字符;

                    如果跳出循环的i!=len,就是说是break出来的。则出现不一致的前缀了,则放弃当前字符。跳出外层循环。



class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        //strs={"dog","racecar","car"};
        string ans;
        if(strs.empty()) return ans;
        int len=strs.size();
        if(len==1) return strs[0];
        int i,j;
        char tmp;
        j=0;
        int minlen=strs[0].size();
        for(i=1;i<=len-1;i++)
        {
            if(strs[i].size()<minlen) minlen=strs[i].size();
        }
        for(j=0;j<=minlen-1;j++)
        {
            tmp=strs[0][j];
            for(i=1;i<=len-1;i++)
            {
                if(strs[i][j]!=tmp) break;
            }
            if(i!=len) break;
            else
                ans+=tmp;
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/momo_mo520/article/details/80500793