随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

力扣14(java)-最长公共前缀(简单)

题目:

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

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

 示例 1:

输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:

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

提示:

1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

来源:力扣(LeetCode)
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、

1.首先判断特殊情况字符串长度为空,则直接返回空;

2.定义最长公共前缀的初始值res为str的第一个字符串;

3.遍历后面的字符串,依次与res相比较,两两进行比较更新最长公共前缀res的值,遍历结束后返回res值。

代码:

二、纵向扫描

从前往后遍历所有字符串的每一列,比较相同列上的字符是否相同,如果相同则继续对下一列进行比较,如果不相同则当前列不再属于公共前缀,当前列之前的部分为最长公共前缀。

代码:

 或者(2023-05-17)

复制代码
 1 class Solution {
 2     public String longestCommonPrefix(String[] strs) {
 3         //纵向比较
 4         int n = strs.length;
 5         if (n == 1) return strs[0];
 6         String ans = strs[0];
 7         for (int i = 1; i < n; i++){
 8             //j代表每个子串的遍历位置
 9             int j = 0;
10             //j小于主串的长度且小于子串的长度
11             while (j < ans.length() && j < strs[i].length() && ans.charAt(j) == strs[i].charAt(j) ){
12                 j++;
13             }
14             ans = strs[i].substring(0, j);
15         }
16         return ans;
17     }
18 }
复制代码

 小知识:

1.java中length和length()的区别:

    在java中String类可以定义字符串变量和字符串数组,length()用于求String字符串对象的长度,是求String字符串对象中字符的个数(字母的个数),而length用于求String字符串数组的长度,求字符串数组中有多少个字符串(单词的个数)。
2.substring() 方法返回字符串的子字符串:

1    用法1:substring(int beginIndex, int endIndex):返回从起始位置到目标位置之间的字符串,但不包含目标位置
2    用法2:substring(int beginIndex):返回从起始位置到字符串末尾

 

posted on   我不想一直当菜鸟  阅读(482)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示