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

今天晚上再说

相关推荐
灵感__idea2 小时前
Hello 算法:贪心的世界
前端·javascript·算法
camellias_2 小时前
【无标题】
java·tomcat
咸鱼2.03 小时前
【java入门到放弃】需要背诵
java·开发语言
澈2073 小时前
深入浅出C++滑动窗口算法:原理、实现与实战应用详解
数据结构·c++·算法
椰猫子3 小时前
Java:异常(exception)
java·开发语言
ambition202423 小时前
从暴力搜索到理论最优:一道任务调度问题的完整算法演进历程
c语言·数据结构·c++·算法·贪心算法·深度优先
cmpxr_3 小时前
【C】原码和补码以及环形坐标取模算法
c语言·开发语言·算法
qiqsevenqiqiqiqi3 小时前
前缀和差分
算法·图论
代码旅人ing4 小时前
链表算法刷题指南
数据结构·算法·链表
Yungoal4 小时前
常见 时间复杂度计算
c++·算法