写出一个在字符串数组中查找最长共同前缀的程序

编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

   

 class Solution {
        public String longestCommonPrefix(String[] strs) {
            String s="";
            int judge=1;
            if(strs.length==0){//数组为空直接返回""
                return s;
            }
            for(int i=0;i<strs[0].length();i++){
                char a=strs[0].charAt(i);//直接选择第一个数组元素,依次取这个字符串的字符
                
                for(int j=0;j<strs.length;j++){
                    
                    if(i>=strs[j].length()){//因为每个字符串长度不同,防止溢出
                        judge=0;
                        break;
                    }
                    
                    if(a!=strs[j].charAt(i)){
                        judge=0;//只要存在不同,直接退出
                        break;
                    }
                    
                    else{
                        if(j==strs.length-1){
                            s=s+a;
                        }
                    }
                    
                }
                if(judge==0){
                    break;
                }
            }
        
            return s;
        }
    }

找出一个字符串数组中最长公共前缀字符串

1.水平扫描


public String longestCommonPrefix(String[] strs) {
    if (strs.length == 0) return "";
    String prefix = strs[0];
    for (int i = 1; i < strs.length; i++)
        while (strs[i].indexOf(prefix) != 0) {                      \\返回一个整数值,指出 String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。
            prefix = prefix.substring(0, prefix.length() - 1);      \\子字符串开始位置不为0则缩小子字符串,再进行对比
            if (prefix.isEmpty()) return "";
        }        
    return prefix;
}
 

2.垂直扫描

扫描二维码关注公众号,回复: 3791536 查看本文章
public String longestCommonPrefix(String[] strs) { 
     if (strs == null || strs.length == 0) 
         return ""; 
     for (int i = 0; i < strs[0].length() ; i++){ 
        char c = strs[0].charAt(i); 
        for (int j = 1; j < strs.length; j ++) { 
           if (i == strs[j].length() || strs[j].charAt(i) != c)
               return strs[0].substring(0, i); 
                  } 
              } 
            return strs[0]; 
         }

猜你喜欢

转载自blog.csdn.net/qq_42857603/article/details/83410346
今日推荐