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.pswp.cn/news/271177.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/271177.shtml
英文地址,請注明出處:http://en.pswp.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;唯一健需…