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 };

 

转载于:https://www.cnblogs.com/wangxiaobao/p/5742896.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/271177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

类加载器ClassLoader的角色

类加载器ClassLoader的角色

软件项目管理:进度管理相关概念介绍

软件项目管理当中&#xff0c;项目进度的合理安排是如期完成软件项目的重要基础&#xff0c;也是合理分配资源的重要依据。项目进度安排是项目管理工作当中非常重要的组成部分。软件开发项目进度安排的方式&#xff1a;1、系统最终交付日期已经确定&#xff0c;软件开发部门必须…

ios开发 多人语音聊天_手游语音市场的现状、机遇与挑战

文/手游那点事小鱼原创2014年持续火热的手游市场成就了一大批企业的上市梦&#xff0c;同时也在大环境下产生了对系列手游增值服务的需求。基于玩家对手游社交性的需求&#xff0c;以及借鉴传统端游&#xff0c;页游中成功的社交体系&#xff0c;手游市场逐步出现了对手游语音的…

linux 下运行 tomcat

一开始找不到表名&#xff0c;原来mysql 表名区分大小写。 修改参数 lower_case_table_names1 成功运行后不能通过浏览器访问&#xff01; 开启8080端口 一、关闭防火墙 firewall-cmd --state 查看状态 [rootVM_7_88_centos /]# firewall-cmd --state running [rootVM_7_88…

软件项目管理:软件工具与开发环境相关知识介绍

1、软件工具相关名词概念软件工具&#xff1a;用来辅助软件开发、运行、维护、管理等过程中的活动软件。软件开发环境&#xff1a;是指支持软件产品开发的软件系统&#xff0c;它由软件工具集和环境集成机制构成。软件工具集&#xff1a;包括支持软件开发相关过程、活动、任务的…

apollo java客户端_携程配置中心Apollo的Java客户端API的使用

一、SpringBoot集成1.发布配置信息设置本机为DEV环境&#xff1a;Linux在/opt/settings/server.properties增加配置envDEV&#xff0c;windows在c:\opt\settings\server.properties图1 在apollo portal上新建项目后&#xff0c;默认就有了application命名空间。在DEV环境下新建…

JNI----Native本地方法接口

Native本地方法接口 JNI&#xff1a;Java Native Interface 本地接口的作用是融合不同的编程语言为Java所用&#xff0c;它的初衷是融合C/C程序 native&#xff1a;凡是带native关键字的&#xff0c;说明java的作用范围达不到了&#xff0c;会去调用底层c语言的库&#xff01…

python的flag是什么意思_网上老说的flag是什么意思

近些年&#xff0c;国内的网络发展速度还是很快的&#xff0c;大家可以通过网络了解很多的东西&#xff0c;因此网络上也有很多热词开始流行起来&#xff0c;其中flag算是十分流行的一个词汇&#xff0c;网上老说的flag是什么意思?立个flag是什么梗?可能还有一些朋友并不是很…

项目管理基础:系统分析相关概念介绍

1、系统分析的主要任务系统分析主要任务是对现行的系统进一步详细调查&#xff0c;将调查得到的资料集中&#xff0c;对组织内部整体管理状况和信息处理过程进行分析&#xff0c;为系统开发提供所需要的资料&#xff0c;并提交系统方案说明书。2、系统分析的主要阶段系统分析主…

java线程池和线程实例化_浅谈Java 线程池原理及使用方式

一、简介什么是线程池&#xff1f;池的概念大家也许都有所听闻&#xff0c;池就是相当于一个容器&#xff0c;里面有许许多多的东西你可以即拿即用。java中有线程池、连接池等等。线程池就是在系统启动或者实例化池时创建一些空闲的线程&#xff0c;等待工作调度&#xff0c;执…

线性代数及其应用_线性代数入门——行列式的简单应用选讲

系列简介&#xff1a;这个系列文章讲解线性代数的基础内容&#xff0c;注重学习方法的培养。线性代数课程的一个重要特点(也是难点)是概念众多&#xff0c;而且各概念间有着千丝万缕的联系&#xff0c;对于初学者不易理解的问题我们会不惜笔墨加以解释。在内容上&#xff0c;以…

RocketMQ 使用及常见问题

前言 本文档是针对RocketMQ使用及常见问题的说明。 一&#xff0e;获取项目、安装包及文档 1. alibaba/RocketMQ https://github.com/alibaba/RocketMQ 2. Download the latest release package https://github.com/alibaba/RocketMQ/releases 3.…

系统开发基础:UML相关知识笔记

1、UML概念统一建模语言&#xff08;Unified Modeling Language UML&#xff09;是面向对象软件的标准建模语言。由于简单、统一&#xff0c;又能够表达软件设计中的动态和静态信息。目前UML已经成为可视化建模语言的工业标准。2、UML的组成UML三要素&#xff1a;构造块、规则、…

java中什么是运行异常_在java中最常用的运行时异常是什么?

我从不会抛出NullPointerException。对我来说&#xff0c;它是一个出现在代码中当出现问题时&#xff0c;需要开发人员看看会发生什么。然后(s)他固定的原因&#xff0c;它不会再次发生。我使用IllegalStateException表示对象配置不正确或调用的顺序不正确。但是&#xff0c;我…

迭代器 java_面试必备(含答案):30 个 Java 高频面试问题

Java集合框架为Java编程语言的基础&#xff0c;也是Java面试中很重要的一个知识点。这里&#xff0c;我列出了一些关于Java集合的重要问题和答案。1.Java集合框架是什么&#xff1f;说出一些集合框架的优点&#xff1f;每种编程语言中都有集合&#xff0c;最初的Java版本包含几…

硬件基础:台式电脑上的常用的几个接口!

今天给大家详细讲解台式电脑上的常用的几个接口&#xff01;1、I/O接口部分下图所有的接口&#xff0c;也是我们机箱后面的接口&#xff0c;统称为&#xff1a;I/O接口。2、键鼠PS/2PS/2接口是I/O接口中比较常见的一种接口&#xff0c;用来连接键盘和鼠标&#xff0c;二者可以用…

CSS-DOM介绍

三位一体的网页: 我们在浏览器里看到的网页其实是由以下三层信息构成的一个共同体: 1、结构层: 结构层是由HTML和XHTML之类的标记语言所构成的。所就是哪些出现在html标签里面的单词,对网页内容的语义含义作出了如下描述&#xff0c;例如&#xff0c;<p>This is a paragr…

java 开发注意项_JAVA开发注意事项集锦

本篇博客用于持续记录开发过程中的常用的需要注意的事项&#xff0c;都是严重的生产问题大家总结出来的、记得持续更新喔。一&#xff0c;不要以时间戳作为唯一健时间戳精确到ms级别&#xff0c;并不能作为唯一入口参数&#xff0c;数据库更新唯一查询参数&#xff0c;唯一健需…