Java117 最长公共前缀

最长公共前缀

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

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

先想思路,看题解,对照题解思路一不一样,很一样直接开始写,没思路直接看题解

java 复制代码
public class Solution6 {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length == 0)
            return "";//字符串为空,没公共前缀。
        String ans = strs[0];//第一个元素为ans
        for(int i =1;i<strs.length;i++) {//遍历ans
            int j=0;
            for(;j<ans.length() && j < strs[i].length();j++) {//啥意思 ;前面没有内容,表示循环变量i已经在循环外部定义和初始化
                //这么定义有啥好处:这种写法通常用于当循环变量需要在循环外部初始化,或者需要保留循环结束后的i值的情况。
                //j<strs第一个字符串的长度 并且 j小于字符串组当前遍历到的字符串的长度
                if(ans.charAt(j) != strs[i].charAt(j))//如果ans的第j个元素 和 字符串组中第i个元素的 (当前遍历元素)的第j个字符不同
                    //退出循环
                    break;//break是退出当前循环吗?是的 退出for循环 输出相同的当前元素的第j个以及字符串数组中第i个。
            }
            ans = ans.substring(0, j);//啥意思?​从字符串 ans中截取从索引 0 开始到索引 j(不包括 j)的子字符串,并将结果重新赋值给 ans。
            if(ans.equals(""))//为啥会="" 没有想等的 前缀
                return ans; //是return 原来的ans 还是return 现在的null
        }  
        return ans;//执行完了,返回ans
        //计划弄个表看下
    }
}
java 复制代码
class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length == 0) 
            return "";
        String ans = strs[0];
        for(int i =1;i<strs.length;i++) {
            int j=0;
            for(;j<ans.length() && j < strs[i].length();j++) {
                if(ans.charAt(j) != strs[i].charAt(j))
                    break;
            }
            ans = ans.substring(0, j);
            if(ans.equals(""))
                return ans;
        }
        return ans;
    }
}

strs={"flower","flow","flight"}

str.length!=0

ans="flower"

str.length()=

strs i j ans j<ans.length() && j< strs[i].length() ans.charAt(j) strs[i].charAt(j) ans=ans.substring(0,j)
"flower","flow","flight" 1 0 flower 0<6&&0<4 ok a flow.charAt[0]=f f
2 1 flower 1<6 1<strs[2].length=6 ok ans.charAt(1)=l strs[i].charAt(j)=strs[2].charAt[1]=flight.charAt[1]=l ans=


ans=ans.substring(0,j)不太理解。

j初始不是0吗?

外部定义


ans=ans.substring(0,j)不太理解。

j初始不是0吗?

外部定义 会变得 根据for

今天晚上再说

相关推荐
蜡笔小马1 小时前
10.Boost.Geometry R-tree 空间索引详解
开发语言·c++·算法·r-tree
kali-Myon1 小时前
2025春秋杯网络安全联赛冬季赛-day1
java·sql·安全·web安全·ai·php·web
我是咸鱼不闲呀1 小时前
力扣Hot100系列20(Java)——[动态规划]总结(下)( 单词拆分,最大递增子序列,乘积最大子数组 ,分割等和子集,最长有效括号)
java·leetcode·动态规划
唐梓航-求职中1 小时前
编程-技术-算法-leetcode-288. 单词的唯一缩写
算法·leetcode·c#
仟濹1 小时前
【算法打卡day3 | 2026-02-08 周日 | 算法: BFS】3_卡码网99_计数孤岛_BFS | 4_卡码网100_最大岛屿的面积DFS
算法·深度优先·宽度优先
清水白石0081 小时前
深入解析 LRU 缓存:从 `@lru_cache` 到手动实现的完整指南
java·python·spring·缓存
Ll13045252981 小时前
Leetcode二叉树part4
算法·leetcode·职场和发展
Queenie_Charlie1 小时前
stars(树状数组)
数据结构·c++·树状数组
颜酱1 小时前
二叉树遍历思维实战
javascript·后端·算法
宝贝儿好1 小时前
第二章: 图像处理基本操作
算法