LeetCode 14 最长公共前缀 (C语言)
一. 题目
二. 思路
纵向比较,看所有字符串的第 i 个字符是否一致,若一致就比较下一个字符,直到出现不一致时,结束比较,返回之前一致的字符串。
三.代码
char * longestCommonPrefix(char ** strs, int strsSize){ /*(tip 1)*/
int count = 0;
if (strsSize == 0) return ""; // 若为空字符,直接返回""
if (strsSize == 1) return strs[0]; // 若数组长度为1,则第一个就是最长公共前缀
while (1) {
for (int i = 1; i <= strsSize - 1; i ++ ) {
/*(tip 2)*/ if (strs[0][count] != strs[i][count] || strs[0][count] == '\0' || strs[i][count] == '\0') {
strs[0][count] = '\0';
return strs[0];
}
}
count ++;
}
return;
}
执行结果
四. 注释
Tips:
tip 1 : char ** strs 表示一个二维字符数组,这里可以理解为字符串数组,数组中的每个元素均为字符串
tip 2 : 从第二个字符串开始 将每个字符串的第count个元素与第一个字符串的第count个元素进行比较,且 若待比较的字符串中有空字符,直接返回空字符。