Leetcode 每日刷题 -- Longest Common Prefix

https://leetcode.com/problems/longest-common-prefix/description/

问题描述:找出字符串数组中最长前缀,若没有,返回空“”

Example 1:

Input: strs = ["flower","flow","flight"]

Output: "fl"

结题思路:

  1. 摘出第一个字符串, flower, 假定最长前缀为strlen("flower") = 6,

  1. 摘出第二个字符串, flow, 与第一个字符串逐个字符比较,得到公共前缀长度res_len,

  1. 遍历第二个字符串~最后一个字符串,得到最小res_len, 即为最终公共前缀长度,

  1. 截取第一个字符串长度为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);

}

你可能感兴趣的:(Leetcode,leetcode,算法,职场和发展)