0
点赞
收藏
分享

微信扫一扫

Leetcode14: 最长公共前缀

GG_lyf 2022-02-28 阅读 62
c语言

Leetcode14 最长公共前缀

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

char * longestCommonPrefix(char ** strs, int strsSize)
{
	if (strs == NULL)
	{
		return NULL;
	}

	int minSize = 200;
	for (int i = 0; i < strsSize; i++)
	{
		int ret = strlen(strs[i]);
		if (ret < minSize)
		{
			minSize = ret;
		}
	}

	char* p = (char*)malloc(sizeof(char)* (minSize+1));
	char* helpstr = (char*)malloc(sizeof(char)*(strsSize + 1));

	int k = 0;

	for (int i = 0; i < minSize; i++)
	{
		//得到每一个字符串的字符
		
		for (int j = 0; j < strsSize; j++)
		{
			char ch = *(strs[j] + i);
			helpstr[j] = ch;
		}

		//判断每一个字符是不是相等
		char ch = helpstr[0];
		for (int j = 0; j < strsSize; j++)
		{
			if (ch != helpstr[j])
			{
				free(helpstr);
				helpstr = NULL;
				p[k] = '\0';
				return p;
			}
		}
		p[k++] = ch;
	}
	free(helpstr);
	helpstr = NULL;
	p[k] = '\0';
	return p;
}

int main()
{
	char* strs[] = { "dog", "racecar", "car" };
	int sz = sizeof(strs) / sizeof(strs[0]);
	char* p = longestCommonPrefix(strs, sz);
	while (*p!='\0')
	{
		printf("%c", *p);
		p++;
	}
	free(p);
	p = NULL;
	return 0;
}

在这里插入图片描述

举报

相关推荐

0 条评论