最长公共前缀

本文介绍了如何使用C语言编写一个函数,寻找n个字符串中的最长公共前缀。通过三个步骤:判空、遍历字符串和比较字符,实现查找最长公共前缀的功能。示例代码展示了如何在主函数中调用这个函数并处理内存管理。
摘要由CSDN通过智能技术生成

老样子,先上题!

第一题
1. 最长公共前缀
问题描述
编写一个函数来查找 n (正整数)个字符串中的最长公共前缀。如果不存在公共前缀,返回
字符串 NULL
【输入形式】
n
n 个字符串
【输出形式】字符串
【样例输入 1
3
flower flow flight
【样例输出 2 fl
【样例输入 2 3
dog racedocar cdoar
【样例输出 2 NULL
这道题就很简单,非常符合我们的三步走套路!
第一步:不知道要用到什么库函数,直接放三个!

#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;
}

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值