LeetCode | Longest Common Prefix(最长公共前缀)
2014-07-06 21:05
471 查看
题目:
Write a function to find the longest common prefix string amongst an array of strings.
求一系列字符串的公共字符串前缀。
题目解析:
没有想到很好的方法,只能一个字符串一个字符串的相比较,最后求得公共字符串。不过题目中还是有很多需要注意的地方的。
1:我如何定义一个字符串数组?char *str[]。其中每个指针都指向一个字符串。但是不能用sizeof()或者strlen来求。其求的知识占据的空间或者字符串长度。需要再函数中显示定义该数组的长度。
2:当数组的个数小于等于0时或者已经确定了字符串为空的时候,应该退出循环函数,返回空串。
3:我们只是用一个下标index表示,最多指向那个位置,而不要另分配数组来保存。在求得最终的index后,才分配空间。
代码:
Write a function to find the longest common prefix string amongst an array of strings.
求一系列字符串的公共字符串前缀。
题目解析:
没有想到很好的方法,只能一个字符串一个字符串的相比较,最后求得公共字符串。不过题目中还是有很多需要注意的地方的。
1:我如何定义一个字符串数组?char *str[]。其中每个指针都指向一个字符串。但是不能用sizeof()或者strlen来求。其求的知识占据的空间或者字符串长度。需要再函数中显示定义该数组的长度。
2:当数组的个数小于等于0时或者已经确定了字符串为空的时候,应该退出循环函数,返回空串。
3:我们只是用一个下标index表示,最多指向那个位置,而不要另分配数组来保存。在求得最终的index后,才分配空间。
代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 4 char *LongestCommonPrefix(char *str[],int n); int main() { char *str[MAX] = {"abcdeadb","abcdeadd","abcdedab","abcdeade"}; char *arr; arr = LongestCommonPrefix(str,MAX); printf("arr = %s",arr); free(arr); return 0; } char *LongestCommonPrefix(char *str[],int n) { int i,index = strlen(str[0]); if(n <= 0) return ""; printf("index = %d\n",index); for(i = 1;i < MAX;++i){ index = index < strlen(str[i]) ? index : strlen(str[i]); if(index == 0){ return ""; } for(int j = 0;j < index;++j){ if(str[i][j] != str[0][j]){ index = j; //index表示个数 break; } } } char *arr = (char *)malloc((index+1) * sizeof(char)); memcpy(arr,str[0],index); arr[index] = '\0'; return arr; }
相关文章推荐
- 每日一练之Longest Common Prefix【LeetCode No.14】——求字符串的最长公共前缀
- (LeetCode)Longest Common Prefix --- 最长公共前缀
- leetcode:java.T014_LongestCommonPrefix--写一个函数找出一个字串所数组中的最长的公共前缀
- LeetCode Longest Common Prefix 最长公共前缀
- 【LeetCode-面试算法经典-Java实现】【014-Longest Common Prefix(最长公共前缀)】
- [C++]LeetCode 14: Longest Common Prefix(最长公共前缀)
- Leetcode:Longest Common Prefix 最长公共前缀
- leetcode——14——Longest Common Prefix最长公共前缀
- LeetCode 14 Longest Common Prefix(最长公共前缀)(String)
- LeetCode 14 Longest Common Prefix(最长公共前缀)
- [转][LeetCode]Longest Common Prefix ——求字符串的最长公共前缀
- LeetCode 第十四题 Longest Common Prefix(最长公共前缀)
- [LeetCode]32. Longest Common Prefix最长公共前缀
- [leetcode] Longest Common Prefix 字符窜最长公共前缀判断
- LeetCode-14-Longest Common Prefix(最长公共前缀)
- LeetCode 14 Longest Common Prefix(最长公共前缀)
- leetcode Longest Common Prefix不同字符串的公共前缀
- leetcode:Longest Common Prefix(取最长字符串前缀)
- Longest Common Prefix -最长公共前缀
- LeetCode-14-Longest-Common-Prefix 求若干字符串的最大公共前缀