目录
题目要求
代码实现
题目要求
编写一个函数来查找字符串数组中的最长公共前缀,如果不存在公共前缀,返回空字符串 ""
代码实现
代码演示:
void CommonPrefix(char** strs, int strsSize, char* returnStr)
{
char* first_row = *strs;
for (int j = 0; first_row[j] != '\0'; j++)
{
for (int i = 0; i < strsSize; i++)
{
if (first_row[j] != strs[i][j])
return;
}
returnStr[j] = first_row[j];
}
}
代码解析:
代码思路:利用第一个单词和其他单词一一作比较,对应单词比对应单词,相同的话就比下一个单词,直到比到某一个单词走到尾,否则不相同就直接结束
代码逻辑:first_row 指针指向 strs 的第一个单词,利用双重 for 循环,把第一个单词的每个字母和其他单词的对应字母一一比较,相同就赋值给 returnStr ,不相同就结束
代码验证:
有相同的字母时:
无相同的字母时:
算法的时间和空间复杂度:
双重 for 循环,且循环内部是常数次,经典的 N^2 ,没有消耗额外的空间,得出:
时间复杂度:O(N^2)
空间复杂度:O(1)