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 小时前
C++编译期多态实现
开发语言·c++·算法
scx201310041 小时前
20260129LCA总结
算法·深度优先·图论
2301_765703141 小时前
C++中的协程编程
开发语言·c++·算法
m0_748708051 小时前
实时数据压缩库
开发语言·c++·算法
小魏每天都学习2 小时前
【算法——c/c++]
c语言·c++·算法
智码未来学堂2 小时前
探秘 C 语言算法之枚举:解锁解题新思路
c语言·数据结构·算法
惊讶的猫2 小时前
探究StringBuilder和StringBuffer的线程安全问题
java·开发语言
jmxwzy2 小时前
Spring全家桶
java·spring·rpc
Halo_tjn2 小时前
基于封装的专项 知识点
java·前端·python·算法
春日见3 小时前
如何避免代码冲突,拉取分支
linux·人工智能·算法·机器学习·自动驾驶