Longest common prefix(最长的相同前缀)

和师兄昨晚刷的又一道编程题
在这里插入图片描述
在这里插入图片描述
如果有相同的就输出相同前缀,否则的话输出“ ”
代码如下

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs.length==0||strs==null) //如果数组为长度为0或者数组为空是为了防止空指针异常
         return ("");
        if(strs.length==1){ //数组的长度为1,直接输出这个数组里面的字符串
            return strs[0];
        }
      
            int shorest=0;
            int len=strs[0].length();//定义一个最短下标,最短长度变量
            for(int i=1;i<strs.length;i++){
                if(strs[i].length()<len){
                   shorest=i;
                   len=strs[i].length();//找到最短的长度和下标
                }
            }
            String sub=strs[shorest];
            for(int j=0;j<strs.length;j++){
               
                while(strs[j].indexOf(sub)!=0){//如果sub字符串和strs【i】前缀相同就位0,跳出while循环
                    sub=sub.substring(0,sub.length()-1);
                }
            }
                    return sub;
        

    
}
}

思想:首先找到数组中最短的字符串:令一个下标代表数组中的位置,长度代表字符串的长度;然后逐个和所有的数组中字符串比较前缀:indexOf()就是括号里面的字符串在外面字符串的起始位置,如果不是全部相同的话把括号里面的字符串减一通过substring来输出减一之后的字符串,逐次比较相同前缀知道找出最短的前缀。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值