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

    题意:

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

    这两天实验室项目太忙了, 老板各种活,只能挑着先水几道easy题,这两个题是昨天做的没来得及写总结。

    分析:

    暴力的想法遍历比较一下就行,注意遍历的始末位置。优化的话改天再看看discuss

    代码:

     1 class Solution {
     2 public:
     3     string longestCommonPrefix(vector<string>& strs) {
     4         string result;
     5         if (strs.size() == 0) {
     6             return result;
     7         }
     8         int minLength = 0x7FFFFFFF;
     9         for (int i = 0; i < strs.size(); ++i) {
    10             int si = strs[i].size();
    11             minLength = min(minLength, si);
    12         }
    13 
    14         for (int i = 0; i < minLength; ++i) {
    15             int flag = 0;
    16             for (int j = 0; j < strs.size() - 1; ++j) {
    17                 if (strs[j][i] != strs[j + 1][i]) {
    18                     flag = 1;
    19                     break;
    20                 }
    21             }
    22             if (flag == 0) {
    23                 result += strs[0][i];
    24             }
    25             if (flag == 1) {
    26                 break;
    27             }
    28         }
    29         return result;
    30     }
    31 };

    8.6更新:

    上面的还是不删除了,算法上这个简单题应该没啥优化的了,无非是另一种方法拿第一个字符串以此与后续求公共前缀;

    但是!当初这个代码写的真是太长太丑了...有一些可以优化代码的地方,比如

    1.  flag其实没用,不满足情况就直接返回结果就行了;

    2.  不要多走一遍求最小来作为遍历范围了,中间加一个判断语句就行;

    3.  不用sting的+=,改用一个length最后再substr感觉效率上会高一点;(在leetcode跑的并没变化...)

    更新后代码:

     1 class Solution {
     2 public:
     3     string longestCommonPrefix(vector<string>& strs) {
     4         int length = 0;
     5         if (strs.size() == 0) {
     6             return "";
     7         }
     8         for (int i = 0; i < strs[0].size(); ++i) {
     9             for (int j = 0; j < strs.size() - 1; ++j) {
    10                 if (strs[j].size() == i|| strs[j][i] != strs[j + 1][i]) {
    11                     return strs[0].substr(0,length);
    12                 }
    13             }
    14             length++;
    15         }
    16         return strs[0].substr(0,length);
    17     }
    18 };
  • 相关阅读:
    事件
    10- JMeter5.1.1 工具快速入门
    06- Linux Ubuntu下sublime下载与使用与安装包
    控件是什么意思?
    09- 性能测试关键指标
    08- Tomcat入门与环境搭建部署
    07- HTTP协议详解及Fiddler抓包
    06- web兼容性测试与web兼容性测试工具
    05- web网站链接测试与XENU工具使用
    04- cookie与缓存技术
  • 原文地址:https://www.cnblogs.com/wangxiaobao/p/5742896.html
Copyright © 2011-2022 走看看