#14 最长公共前缀(C)

(1)解题思路

以第一个字符串作为比较的标准,采用两层循环进行纵向对比,最后用字符串数组的第一个字符串保存最长公共前缀。

(2)代码

char * longestCommonPrefix(char ** strs, int strsSize){
    if(strsSize == 0){
        return "";              //字符串数组为空,返回空字符串
    }

    int flag = 0;               //flag等于0表示最长公共前缀还未找到
    
    //以第一个字符串作为比较的标准,采用两层循环进行纵向对比,最后用字符串数组的第一个字符串保存最长公共前缀

    for(int i = 0; i < strlen(strs[0]); i++){  //i表示列,strlen(strs[0])表示数组中第一个字符串的长度

        for(int j = 1; j < strsSize; j++){     //j表示行
            if(strs[0][i] != strs[j][i]){      //若字符串的第i列不同,则最长公共前缀已找到,跳出内层循环
                strs[0][i] = '\0';             //用数组的第一个字符串保存最长公共前缀
                flag = 1;
                break;
            }
        }

        if(flag == 1){                         //最长公共前缀已找到,跳出外层循环
            break;
        }

    }

    return strs[0];                            //最长公共前缀已找到

}
posted @ 2024-07-17 15:39  KenWan  阅读(35)  评论(0)    收藏  举报