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

今天晚上再说

相关推荐
大阿明19 小时前
Spring Boot(快速上手)
java·spring boot·后端
Liu6288819 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
bearpping19 小时前
Java进阶,时间与日期,包装类,正则表达式
java
邵奈一19 小时前
清明纪念·时光信笺——项目运行指南
java·实战·项目
AI科技星20 小时前
全尺度角速度统一:基于 v ≡ c 的纯推导与验证
c语言·开发语言·人工智能·opencv·算法·机器学习·数据挖掘
sunwenjian88620 小时前
Java进阶——IO 流
java·开发语言·python
sinat_2554878120 小时前
读者、作家 Java集合学习笔记
java·笔记·学习
皮皮林55120 小时前
如何画出一张优秀的架构图?(老鸟必备)
java
百锦再20 小时前
Java 并发编程进阶,从线程池、锁、AQS 到并发容器与性能调优全解析
java·开发语言·jvm·spring·kafka·tomcat·maven
条tiao条20 小时前
KMP 算法详解:告别暴力匹配,让字符串匹配 “永不回头”
开发语言·算法