码迷,mamicode.com
首页 > 其他好文 > 详细

14 Longest Common Prefix

时间:2016-04-05 02:00:44      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:

文章目录如下

(1)自己的思路

(2)自己的代码

(3)别人的思路

(4)别人的代码

(5)对比自己的不足之处

题目如下:

Write a function to find the longest common prefix string amongst an array of strings.

(1)自己的思路

a.首先要选出所有string中最长的前缀,得纵向的比较每个string中相同的列的字符是否相等,如果相等,那么继续,如果发现不相等,那么直接返回前面扫描过的字符串即可。

b.这些前缀的长度最长也不超过所有string中最短的那个string的长度。

(2)自己的代码

class Solution {
public:

    string longestCommonPrefix(vector<string>& strs) {
        int minLen = INT_MAX;
        int strsLen = strs.size();

        for (int i = 0; i < strsLen; i++)
        {
            if (minLen > strs.at(i).length())
                minLen = strs.at(i).length();
        }

        vector<char> pref;
        int isFinish = false;

        char tmpC = \0;
        char tmpc = \0;
        for (int m = 0;m < minLen; m++)
        {
            tmpC = strs.at(0)[m];

            for (int n = 0;n < strsLen; n++)
            {
                tmpc = strs.at(n)[m];
                if (tmpC != tmpc) 
                {
                    isFinish = true;
                    break;
                }
            }
            if (isFinish)
                break;

            pref.push_back(tmpC);
        }

        int preLen = pref.size();
        string prefix(preLen, \0);
        for (int t = 0;t < preLen; t++) 
        {
            prefix.replace(t, 1, 1, pref.at(t));
        }
        return prefix;
    }
};

 

(3)别人的思路

思路是一样的,但是别人的代码确实是又精简,又清晰!

(4)别人的代码

class Solution {
public:
    string longestCommonPrefix(vector<string> &strs) {
        if (strs.empty()) return "";

        for (int idx = 0; idx < strs[0].size(); ++idx) { // 纵向扫描
            for (int i = 1; i < strs.size(); ++i) {
                if (strs[i][idx] != strs[0][idx]) return strs[0].substr(0,idx);
            }
        }
        return strs[0];
    }
};

 

(5)对比自己的不足之处

a.如果说写代码是写作文的话,总觉得我用的是白话文,别人用的是文言文……

b.我的代码在VS2015上是可以编译运行的(运行结果正确),但是在网站上运行出错,我也不知道为什么……

 

14 Longest Common Prefix

标签:

原文地址:http://www.cnblogs.com/magicy/p/5353508.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!