zoukankan      html  css  js  c++  java
  • 14 Longest Common Prefix

    文章目录如下

    (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 = '';
            char tmpc = '';
            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, '');
            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上是可以编译运行的(运行结果正确),但是在网站上运行出错,我也不知道为什么……

  • 相关阅读:
    myeclipse 配置svn
    windows下 将tomcat做成服务,并于oracle后启动
    局部内部类为什么只能访问final局部变量,对于成员变量却可以随便访问?
    使用cmd查看windows端口占用情况,并关闭应用
    生成javadoc文档
    JNI以及JNA使用
    自定义标签-java
    dwr框架应用
    Hadoop生态圈简介
    tomcat之日志记录
  • 原文地址:https://www.cnblogs.com/magicy/p/5353508.html
Copyright © 2011-2022 走看看