zoukankan      html  css  js  c++  java
  • [LeetCode] Longest Common Prefix 解题报告


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

    [解题报告]
    又一个实现题。遍历字符串数组,每次用当前prefix和下一个字符串匹配以生成新的prefix。

    [Code]
    1:    string longestCommonPrefix(vector<string> &strs) {  
    2: // Start typing your C/C++ solution below
    3: // DO NOT write int main() function
    4: string compare;
    5: if(strs.size() == 0) return compare;
    6: compare = strs[0];
    7: for(int i =1; i< strs.size() ; i++)
    8: {
    9: string prefix;
    10: int k =0;
    11: while(k< compare.size() && k< strs[i].size())
    12: {
    13: if(compare[k] != strs[i][k])
    14: break;
    15: prefix.append(1, compare[k]);
    16: k++;
    17: }
    18: compare.clear();
    19: compare.append(prefix.c_str());
    20: }
    21: return compare;
    22: }

    另一个直观的解法就是对于每一个字母比较所有字符串,直到遇到任何一个不匹配。这个时间复杂度比上一个解法好一些,避免了不必要的比较。

    1:    string longestCommonPrefix(vector<string> &strs) {  
    2: // Start typing your C/C++ solution below
    3: // DO NOT write int main() function
    4: string prefix;
    5: if(strs.size() ==0) return prefix;
    6: int k=0;
    7: while(1)
    8: {
    9: if(k == strs[0].size()) break;
    10: char p = strs[0][k];
    11: int i =1;
    12: for(; i< strs.size(); i++)
    13: {
    14: if(k==strs[i].size()) break;
    15: if(p != strs[i][k])
    16: break;
    17: }
    18: if(i != strs.size())
    19: break;
    20: prefix.append(1,p);
    21: k++;
    22: }
    23: return prefix;
    24: }

    Update 2, 3/7/2013
    refactor code  a bit
    1:     string longestCommonPrefix(vector<string> &strs) {  
    2: string prefix;
    3: if(strs.size() ==0) return prefix;
    4: int len =0;
    5: while(1)
    6: {
    7: char var;
    8: int i=0;
    9: for(; i< strs.size(); i++)
    10: {
    11: if(i ==0) var =strs[0][len];
    12: if(strs[i].size() == len || var != strs[i][len])
    13: break;
    14: }
    15: if(i!= strs.size())
    16: break;
    17: len++;
    18: prefix.append(1, var);
    19: }
    20: return prefix;
    21: }

  • 相关阅读:
    hdu 2554 最短路 (dijkstra)
    hdu 1217 Arbitrage (spfa)
    盘点:2018年双11背后的蚂蚁核心技术
    跨境物流链路怎么做?菜鸟工程师打造了全球通关“神器”
    用简单代码看卷积组块发展
    分析core,是从案发现场,推导案发经过
    全图化引擎(AI·OS)中的编译技术
    开源 serverless 产品原理剖析
    手把手教您将 libreoffice 移植到函数计算平台
    在数据采集器中用TensorFlow进行实时机器学习
  • 原文地址:https://www.cnblogs.com/codingtmd/p/5078995.html
Copyright © 2011-2022 走看看