【Leetcode合集】14. 最長公共前綴

14. 最長公共前綴

14. 最長公共前綴

代碼倉庫地址: https://github.com/slience-me/Leetcode

個人博客 :https://slienceme.xyz

  • 編寫一個函數來查找字符串數組中的最長公共前綴。

    如果不存在公共前綴,返回空字符串 ""

示例 1:

輸入:strs = ["flower","flow","flight"]
輸出:"fl"

示例 2:

輸入:strs = ["dog","racecar","car"]
輸出:""
解釋:輸入不存在公共前綴。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 僅由小寫英文字母組成

方案1:暴力解 歷史最差代碼沒有之一

第一種純暴力解,很多不合理的地方,考場上只是為了拿基礎分,就是結果導向性解題方式

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {if (strs[0] == ""){return "";}int maxsize = -1;for (const auto &item: strs){maxsize = max(maxsize, static_cast<int>(item.size()));}string res;for (int i = 0; i < maxsize; ++i) {char temp = strs[0][i];string tmp ;for (int j = 0; j < strs.size(); ++j) {if (temp == strs[j][i]){cout<<"temp: "<<temp<<"   strs[j][i]: "<<strs[j][i]<<"  i: "<<i<<" j: "<<j<<endl;tmp = strs[j][i];} else {tmp = "";goto outerLoop; // 跳到外層循環的標簽位置}}res.append(tmp);}outerLoop:return res;}
};

執行用時分布 48ms 擊敗6.69%使用 C++ 的用戶

消耗內存分布9.37MB 擊敗15.46%使用 C++ 的用戶

方案2

初次優化,這種方案比上一種更加合理,去除掉了很多冗余的代碼
i >= s.length()關鍵條件 s[i] != tmp

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string res;for (int i = 0; i < 200; ++i) {if (i > strs[0].length())return res; //處理空情況char tmp = strs[0][i];for (const auto &s: strs) {if (i >= s.length())return res;// 超出了,則說明當前字符串長度不夠 flower flow  i=5 >= 4if (s[i] != tmp)return res;}res += tmp;}return res;}
};

執行用時分布 0ms 擊敗100%使用 C++ 的用戶

消耗內存分布 9.04MB 擊敗63.16%使用 C++ 的用戶

方案3

最后的優化,沒有太大的提升

class Solution {
public:string longestCommonPrefix(vector<string>& strs) {string ans = "";// 用第一個單詞的字符一次遍歷全部字符串for (int i = 0; i < strs[0].size(); ++i) {bool flag = true;for (int j = 1; j < strs.size(); ++j) {if (i >= strs[j].size() || strs[j][i] != strs[0][i]) {flag = false; // 合二為一break; // 退出里循環}}if (flag) {ans += strs[0][i];} else {break; // 退出外循環}}return ans;}
};

執行用時分布 4ms 擊敗%使用 C++ 的用戶

消耗內存分布 9.12MB 擊敗46.03%使用 C++ 的用戶

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/164113.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164113.shtml
英文地址,請注明出處:http://en.pswp.cn/news/164113.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【UE】用樣條線實現測距功能(下)

目錄 效果 步驟 一、實現多次測距功能 二、通過控件藍圖來進行測距 在上一篇&#xff08;【UE】用樣條線實現測距功能&#xff08;上&#xff09;&#xff09;文章基礎上繼續實現多次測距和清除功能。 效果 步驟 一、實現多次測距功能 打開藍圖“BP_Spline”&#xff0c…

cherry pick的使用

https://blog.csdn.net/weixin_55229531/article/details/128726872

SPS簡單對應分析

前言&#xff1a; 本專欄參考教材為《SPSS22.0從入門到精通》&#xff0c;由于軟件版本原因&#xff0c;部分內容有所改變&#xff0c;為適應軟件版本的變化&#xff0c;特此創作此專欄便于大家學習。本專欄使用軟件為&#xff1a;SPSS25.0 本專欄所有的數據文件請點擊此鏈接下…

Git如何修改提交(commit)用戶名稱(user.name)和郵箱(user.email)

Git用戶名 Git查看用戶名 git config user.name修改Git提交用戶名 修改全局Git用戶名 git config --global user.name "xx" 修改當前服務/項目Git用戶名 git config user.name "xx"如果出現以下錯誤&#xff0c;解決方案如下&#xff1a; 錯誤案例&am…

量子計算概述

目錄 1.量子計算介紹 2.量子計算應用 3.量子計算研究機構 1.量子計算介紹 量子計算是一種遵循量子力學規律調控量子信息單元進行計算的新型計算模式。經典計算使用2進制進行運算&#xff0c;但2進制只有0和1兩種狀態&#xff0c;而量子計算除了包含0和1兩種狀…

C百題--6.輸出C

1.問題描述 輸出“C”樣式的字符 2.解決思路 1.用printf(&#xff09;逐行輸出&#xff1b; 2用循環一部分一部分輸出 3.代碼實現 #include<stdio.h> int main(){for(int i0;i<5;i){printf("*"); }printf("\n");for(int i0;i<2;i){printf…

OpenStack云計算平臺-鏡像服務

目錄 一、鏡像服務概覽 二、安裝和配置 1、先決條件 2、安全并配置組件 3、完成安裝 三、驗證操作 一、鏡像服務概覽 OpenStack鏡像服務是IaaS的核心服務&#xff0c;如同 :ref:get_started_conceptual_architecture所示。它接受磁盤鏡像或服務器鏡像API請求&#xff0c;…

Redis Stream消息隊列

什么是Stream? Stream 實際上是一個具有消息發布/訂閱功能的組件&#xff0c;也就常說的消息隊列。其實這種類似于 broker/consumer(生產者/消費者)的數據結構很常見&#xff0c;比如 RabbitMQ 消息中間件、Celery 消息中間件&#xff0c;以及 Kafka 分布式消息系統等&#x…

字符串匹配算法——KMP

有文本串aabaabaaf&#xff0c;模式串aabaaf問文本串中是否出現過模式串 暴力解法 最不用動腦子的&#xff0c;直接兩層for循環&#xff0c;逐個匹配&#xff0c;匹配到不相等的值時把文本串后移一位&#xff0c;再重新比較。這種方法的復雜度是O(mn)&#xff0c;該方法低效的…

關鍵字const的修飾(指針)

A.const修飾變量 變量是可以修改的&#xff0c;如果把變量的地址交給?個指針變量&#xff0c;通過指針變量的也可以修改這個變量。 但是如果我們希望?個變量加上?些限制&#xff0c;不能被修改&#xff0c;怎么做呢&#xff1f;這就是const的作?。 #include <stdio.h&…

postpresql 查詢某張表的字段名和字段類型

postpresql 查詢某張表的字段名和字段類型 工作中第一次接觸postpresql&#xff0c;接觸到這么個需求&#xff0c;只是對sql有點了解&#xff0c;于是就網上查閱資料。得知通過系統表可以查詢&#xff0c;設計到幾張系統表&#xff1a;pg_class、pg_attrubute、information_sc…

axios二次封裝配置請求攔截器和響應攔截器

我們為什么要對axios進行二次封裝&#xff1f; 因為我們可以使用請求攔截器在發送請求之前處理一些業務&#xff0c;使用響應攔截器在服務器數據返回后處理一些業務。 我們通常創建一個api文件夾&#xff0c;再創建一個request.js文件&#xff0c;用于存放重寫后的axios。 /…

SiP系統級封裝、SOC芯片和合封芯片主要區別!合封和sip一樣嗎?

SiP系統級封裝、SOC芯片和合封芯片技術是三種備受關注的技術。它們在提高系統性能、穩定性和功耗效率方面都發揮著重要作用 但在集成方式、應用領域和技術特點等方面存在一些區別。本文將從多個角度對這三種技術進行深入解讀。 一、集成方式 合封芯片則是一種將多個芯片或不…

Vue彈窗的使用與傳值

使用element-UI中的Dialog 對話框 vue組件結合實現~~~~ 定義html <div click"MyAnalyze()">我的區劃</div><el-dialog title"" :visible.sync"dialogBiomeVisible"><NationalBiome :closeValue"TypeBiome" cl…

輕松入門Axios:前端開發中的HTTP利器

輕松入門Axios&#xff1a;前端開發中的HTTP利器 前言為什么選擇Axios1. **簡單易用:**2. **功能豐富:**3. **廣泛支持的瀏覽器和環境:**4. **跨域支持:**5. **社區活躍:**6. **對于處理錯誤的友好性:**7. **對于并發請求的支持:** 安裝與引用1. 使用 npm 安裝 Axios&#xff1…

基于51單片機車載空調系統設計proteus仿真+源程序)

一、系統方案 1、本設計采用這51單片機作為主控器。 2、DS18B20采集溫度值送到液晶1602顯示。 3、按鍵設置報警值。 4、溫度控制風扇檔位。 二、硬件設計 原理圖如下&#xff1a; 三、單片機軟件設計 1、首先是系統初始化 /T0初始化*/ void init_t0() { //TMOD0x01;//定時器…

數據庫實驗三 Sql多表查詢和視圖

數據庫實驗三 Sql多表查詢和視圖 一、Sql表二、在線練習 一、Sql表 www.db-book.com 二、在線練習 對所有表執行查詢語句&#xff0c;查看有哪些數據。 select * from tableName; 一、執行以下查詢語句&#xff0c;寫出查詢意圖。 (1) select * from student,takes whe…

經典滑動窗口試題(一)

&#x1f4d8;北塵_&#xff1a;個人主頁 &#x1f30e;個人專欄:《Linux操作系統》《經典算法試題 》《C》 《數據結構與算法》 ??走在路上&#xff0c;不忘來時的初心 文章目錄 一、將x減到0的最小操作數1、題目講解2、講解算法原理3、代碼實現 二、無重復的最長子串1、題…

OpenCV數據類型及CV_16UC1深度圖ros訂閱

最近用到深度圖,對其數據類型及顯示有些迷惑,記筆記于此: 目錄 一、cv::Mat 的數據類型及轉換方式1. cv::Mat 數據類型2. cv::Mat 數據類型互轉2.1 OpenCV數據類型轉換的函數2.2 可視化深度圖像(CV_16UC1)二、cv::Mat 與 sensor_msgs::msg::Image 互轉(基于cv_bridge)1.…