Leetcode 每日刷题 -- Longest Common Prefix
https://leetcode.com/problems/longest-common-prefix/description/
问题描述:找出字符串数组中最长前缀,若没有,返回空“”
Example 1:
Input: strs = ["flower","flow","flight"]
Output: "fl"
结题思路:
摘出第一个字符串, flower, 假定最长前缀为strlen("flower") = 6,
摘出第二个字符串, flow, 与第一个字符串逐个字符比较,得到公共前缀长度res_len,
遍历第二个字符串~最后一个字符串,得到最小res_len, 即为最终公共前缀长度,
截取第一个字符串长度为res_len 子串,作为结果返回
答案C语言版本:
#define min(x, y) (x < y ? x : y)
char * longestCommonPrefix(char ** strs, int strsSize){
uint8_t i = 0, j = 0;
char *str0 = strs[0];
uint8_t res_len = strlen(str0);
char result[200] = {'\0'};
for (i = 1; i < strsSize; i++) {
while (j < res_len && strs[i][j] == str0[j]) j++;
res_len = min(j, res_len);
j = 0;
}
return strncpy(result, str0, res_len);
}