首页 > 其他分享 >七、最长公共前缀

七、最长公共前缀

时间:2023-04-23 13:36:14浏览次数:29  
标签:String 示例 strs 公共 最长 输入 前缀


编写一个函数来查找字符串数组中的最长公共前缀。

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

示例 1:


输入: ["flower","flow","flight"] 输出: "fl"


示例 2:


输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。


说明:

所有输入只包含小写字母 a-z 。

 

class Solution {
    public String longestCommonPrefix(String[] strs) {
        
        int count = strs.length;
        String prefix="";
        if(count !=0){
            prefix=strs[0];
        }
        
        for(int i=0; i<count;i++){
            
            while(!strs[i].startsWith(prefix)){
            //核心代码,不断的从后往前截取字符串,然后与之相比,直到startsWith()返回true
               prefix=prefix.substring(0,prefix.length()-1);
            }
        }
        return prefix;
    }
}

 

标签:String,示例,strs,公共,最长,输入,前缀
From: https://blog.51cto.com/u_16084838/6217458

相关文章

  • 最长等差数列
    给你一个整数数组nums,返回nums中最长等差子序列的长度一.动态规划该题类似最长递增子序列dp[i][j]定义为以i为结尾,公差为j的最长等差数列长度classSolution{public:intlongestArithSeqLength(vector<int>&nums){//dp[i][j]定义为以i为结尾,公差为j的最长......
  • 前缀和
    算法简介前缀和用于快速得到数组某个连续区间内所有元素的元素和。时间复杂度构建前缀和数组:\(O(n)\)求取某区间总和:\(O(1)\)实现原理按照如下规则构建前缀和数组:例如:有数组\(a\),前缀和数组为\(s\)。\(s[0]=0\)\(s[1]=a[1]\)\(s[2]=a[2]+a[1]\)...\(s[n]=......
  • 1027. 最长等差数列
    给你一个整数数组 nums,返回nums 中最长等差子序列的长度。回想一下,nums的子序列是一个列表 nums[i1],nums[i2],...,nums[ik],且 0<=i1<i2<...<ik<=nums.length-1。并且如果 seq[i+1]-seq[i]( 0<=i<seq.length-1)的值都相同,那么序列 seq 是等差......
  • 【DP】LeetCode 1143. 最长公共子序列
    题目链接1143.最长公共子序列思路分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums以前i个元素组成(即nums[i-1])的状态;dp[i][j]分别表示以nums1前i个元素......
  • 力扣——5.最长回文子串(c语言)
    题目描述:给定一个字符串s,找到s中最长的回文子串。你可以假设s的最大长度为1000。示例1:输入:"babad"输出:"bab"注意:"aba"也是一个有效答案。示例2:输入:"cbbd"输出:"bb"1、思路1:动态规划对于一个子串而言,如果它是回文子串,并且长度大于2,那么将它首尾两个字......
  • 【DP】LeetCode 718. 最长重复子数组
    题目链接718.最长重复子数组思路分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums以第i个元素组成(即nums[i-1])的状态;dp[i][j]分别表示以nums1前i个元素(......
  • #yyds干货盘点# LeetCode程序员面试金典:最长有效括号
    题目:给你一个只包含'(' 和')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。 示例1:输入:s="(()"输出:2解释:最长有效括号子串是"()"示例2:输入:s=")()())"输出:4解释:最长有效括号子串是"()()"示例3:输入:s=""输出:0代码实现:classSolution{publicint......
  • day52 300.最长递增子序列 | 674. 最长连续递增序列 | 718. 最长重复子数组
    给你一个整数数组nums,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7]是数组[0,3,1,6,2,2,7]的子序列。示例1:输入:nums=[10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是[2,3,7,101......
  • 最长上升子序列
    #include<bits/stdc++.h>usingnamespacestd;/*测试用例:8-710923881*/constintN=1e5+10;intn,a[N];intf[N],idx;//dp数组,idx:下标指针,因为从1开始,也可以理解为个数、LIS的最大长度intpos[N];//p数组,记录原始数组每个数字在dp数组中......
  • 一维与二维前缀和(蓝桥杯复习+例题讲解+模板c++)
    文章目录前缀和二维前缀和总结3956.截断数组99.激光炸弹前缀和前缀和是一种常见的算法,用于快速计算数组中某一段区间的和。前缀和的思想就是预处理出数组中前缀和,然后用后缀和减去前缀和,即可快速计算区间和。以一维数组为例,设表示数组中第个元素的值,表示数组中前个元素的......