老样子,先上题!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
第二步:1.判空 2.for循环 3.if条件语句进行判断
char* longestCommonPrefix(char** strs, int strsSize) {
if (strsSize == 0) {
return "";
}
字符串部分一般都会用到他的函数,如果不知道用哪个函数,就尽量把三个函数都写上
strlen求字符串长度
strcmp 求字符串长度是否相等 int ret接受返回值 =0则相等 >0第一个长度大于第二个
<0 第二个长度大于第一个
strcpy用于将字符串赋值到新的空间
int len = strlen(strs[0]); // 获取第一个字符串的长度
int count = strsSize; // 字符串数组的大小
for (int i = 0; i < len; i++) {
char c = strs[0][i]; // 获取当前位置字符
for (int j = 1; j < count; j++) {
if (i == strlen(strs[j]) || strs[j][i] != c) {
char* result = (char*)malloc(i + 1); // 分配内存保存前缀
strncpy(result, strs[0], i); // 将前缀拷贝到新分配的内存空间
result[i] = '\0'; // 添加字符串结束符
return result;
}
}
}
// 如果循环结束都没有返回,说明整个第一个字符串就是最长公共前缀
char* result = (char*)malloc(len + 1);
strcpy(result, strs[0]);
return result;
}
第三步:定义存储位置,输入并接受字符串,调用函数求出结果,输出结果
int main() {
char *strs[] = {"flower", "flow", "flight"};
int strsSize = 3;
char* result = longestCommonPrefix(strs, strsSize);
printf("Longest Common Prefix: %s\n", result);
free(result); // 释放动态分配的内存
return 0;
}