最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

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

示例 2:

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

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

思路

先判断出长度最小的字符串,然后按该字符串的第一位去比较其他字符串的第一位,如果相等,比较下一位,以此类推

class Solution {
    public String longestCommonPrefix(String[] strs) {
        
        int t=0;
        
        if(strs.length==0){
           
            return "";
        }
        
        if(strs.length==1){
            return strs[0];
        }
        
        int temp=strs[0].length();
        for(int i=1;i<strs.length;++i){
            if(temp>strs[i].length()){
                temp=strs[i].length();
            }
        }
       
        for(int i=0;i<temp;++i){
            for(int j=1;j<strs.length;++j){
                if(strs[j-1].charAt(i)==(strs[j].charAt(i))){
                    
                }else{
                    if(i==0){
                        return "";
                    }
                    return strs[0].substring(0,i);
                }
            } 
            
            t=i;
        }
        String s=new String();
        for(int i=0;i<temp;++i){
            s+=strs[0].charAt(i);
        }
        return s;
        
    }
}
class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs==null||strs.length==0){
            return "";
        }
        
        String pre=strs[0];
        int i=1;
        while(i<strs.length){
            while(strs[i].indexOf(pre)!=0){
                pre=pre.substring(0,pre.length()-1);
            }
            ++i;
        }
        return pre;
    }
}
char* longestCommonPrefix(char** strs, int strsSize) {
    int len = 0,i,j;
    
    
    if(strsSize == 0)
    {
        return "";
    }
    
    if(strsSize == 1)
    {
        return strs[0];
    }
    
    len = strlen(strs[0]);
    
    for(i = 0;i < strsSize; i++)
    {
        if(strlen(strs[i]) < len)
        {
            len = strlen(strs[i]);
        }
    }
    
    char *result= (char*)calloc(len,sizeof(char*));

    for(j = 0 ;j < len ; j++)
    {
        for( i = 0 ;i < strsSize ; i++ )
        {
           
            if(strs[0][j] != strs[i][j])
            {
                return strncpy(result,strs[0],j);
            }
        }
    }
    
    
    if(j==0&&i==0)
    {return "";}
    else
    {return strncpy(result,strs[0],len);}
    
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容