Leet Code 14 Longest Common Prefix

2024-06-15 08:58
文章标签 code 14 common longest leet prefix

本文主要是介绍Leet Code 14 Longest Common Prefix,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Write a function to find the longest common prefix string amongst an array of strings


【算法思路】

1. 找最短的一个串,然后与其他串每个字符比较


public String longestCommonPrefix(String[] strs) {if(strs.length == 0)return "";if(strs.length == 1)return strs[0];int minLen = strs[0].length();int minIndex = 0;for (int i = 0; i < strs.length; i ++){if (strs[i].length() < minLen){minLen = strs[i].length();minIndex = i;}}StringBuilder sb = new StringBuilder("");for(int i = 0; i < minLen; i ++){int flag = 0;for(int j = 0; j < strs.length; j ++){if(strs[j].charAt(i) != strs[minIndex].charAt(i)){flag = 1;break;}}if(flag == 0){sb.append(strs[minIndex].charAt(i));}else{return sb.toString();}}return sb.toString();}


【CODE V2】

public String longestCommonPrefix(String[] strs) {if(strs == null || strs.length == 0)return "";int minLen=Integer.MAX_VALUE;for(String str: strs){if(minLen > str.length())minLen = str.length();}if(minLen == 0) return "";for(int j=0; j<minLen; j++){char prev='0';for(int i=0; i<strs.length ;i++){if(i==0) {prev = strs[i].charAt(j);continue;}if(strs[i].charAt(j) != prev){return strs[i].substring(0, j);}}}return strs[0].substring(0,minLen);
}



【复杂度】

时间:O(N^2)

空间:O(N)


2. 遍历字符串数组,每次用当前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:    }  


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

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

这篇关于Leet Code 14 Longest Common Prefix的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062999

相关文章

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

Debugging Lua Project created in Cocos Code IDE creates “Waiting for debugger to connect” in Win-7

转自 I Installed Cocos Code IDE and created a new Lua Project. When Debugging the Project(F11) the game window pops up and gives me the message waiting for debugger to connect and then freezes. Also a

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板(类似卡片)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法? 易错14.敏捷--精益、敏捷、看板(类似卡片)--敏捷、精益和看板方法共同的重点在于交付价值、尊重人、减少浪费、透明化、适应变更以及持续改善等方面。

2021-8-14 react笔记-2 创建组件 基本用法

1、目录解析 public中的index.html为入口文件 src目录中文件很乱,先整理文件夹。 新建components 放组件 新建assets放资源   ->/images      ->/css 把乱的文件放进去  修改App.js 根组件和index.js入口文件中的引入路径 2、新建组件 在components文件夹中新建[Name].js文件 //组件名首字母大写

2021-08-14 react笔记-1 安装、环境搭建、创建项目

1、环境 1、安装nodejs 2.安装react脚手架工具 //  cnpm install -g create-react-app 全局安装 2、创建项目 create-react-app [项目名称] 3、运行项目 npm strat  //cd到项目文件夹    进入这个页面  代表运行成功  4、打包 npm run build

用Python实现时间序列模型实战——Day 14: 向量自回归模型 (VAR) 与向量误差修正模型 (VECM)

一、学习内容 1. 向量自回归模型 (VAR) 的基本概念与应用 向量自回归模型 (VAR) 是多元时间序列分析中的一种模型,用于捕捉多个变量之间的相互依赖关系。与单变量自回归模型不同,VAR 模型将多个时间序列作为向量输入,同时对这些变量进行回归分析。 VAR 模型的一般形式为: 其中: ​ 是时间  的变量向量。 是常数向量。​ 是每个时间滞后的回归系数矩阵。​ 是误差项向量,假

LLVM入门2:如何基于自己的代码生成IR-LLVM IR code generation实例介绍

概述 本节将通过一个简单的例子来介绍如何生成llvm IR,以Kaleidoscope IR中的例子为例,我们基于LLVM接口构建一个简单的编译器,实现简单的语句解析并转化为LLVM IR,生成对应的LLVM IR部分,代码如下,文件名为toy.cpp,先给出代码,后面会详细介绍每一步分代码: #include "llvm/ADT/APFloat.h"#include "llvm/ADT/S

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置:  // launch.json{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information,

PMP–一、二、三模–分类–14.敏捷–技巧–原型MVP

文章目录 技巧一模14.敏捷--原型法--项目生命周期--迭代型生命周期,通过连续的原型或概念验证来改进产品或成果。每个新的原型都能带来新的干系人新的反馈和团队见解。题目中明确提到需要反馈,因此原型法比较好用。23、 [单选] 一个敏捷团队的任务是开发一款机器人。项目经理希望确保在机器人被实际建造之前,团队能够收到关于需求的早期反馈并相应地调整设计。项目经理应该使用以下哪一项来实现这个目标?

C++11/14系列学习

十一假期一直在看C++11新特性,比较出名的书《C++ Primer Plus》专门有一个章节来讲解,《C++ Primer》则将C++11的新特性融入到各个章节来学习。在假期的最后一天无意中发现实验楼有一个专门的教程来讲解,算是念念不忘,必有回响吧,特此整理出来,和大家一起学习。 作者网址:https://www.shiyanlou.com/courses/605,非常感谢! 注:本文并没有智