Longest Common Prefix
2015-06-26 11:26
190 查看
Write a function to find the longest common prefix string amongst an array of strings.
初看到这道题有点被迷惑了,先是看到参数里竟然有char **strs声明的两重指针,不过仔细一想,其实不就是存字符指针的数组么,每个字符指针再指向一个字符串。然后再想了想,若要找到几个字符串的最长的共同前缀,那么这个前缀自然存在于每一个字符串中,自然也在第一个字符串中,那么只要从第一个字符串里和其他几个字符串依次比较相应的字符,第一次遇到相应字符不相等的情况,那么不管此时相比较的是第几个字符串,所有字符串的最长公共前缀也就到此为止了(实际上是到“上一个字符”为止)。
C语言代码如下:
小结:
1)注意“字符串为空串”之类的边界情况。
初看到这道题有点被迷惑了,先是看到参数里竟然有char **strs声明的两重指针,不过仔细一想,其实不就是存字符指针的数组么,每个字符指针再指向一个字符串。然后再想了想,若要找到几个字符串的最长的共同前缀,那么这个前缀自然存在于每一个字符串中,自然也在第一个字符串中,那么只要从第一个字符串里和其他几个字符串依次比较相应的字符,第一次遇到相应字符不相等的情况,那么不管此时相比较的是第几个字符串,所有字符串的最长公共前缀也就到此为止了(实际上是到“上一个字符”为止)。
C语言代码如下:
char* longestCommonPrefix(char** strs, int strsSize) { int i,j; int flag = 0; if(strsSize == 0) return ""; for(j = 0; flag == 0 && j <= strlen(strs[0]); j++){ for(i = 1; i<strsSize; i++){ if(strs[0][j] != strs[i][j]){ flag = 1; break; } } } if(flag) strs[0][j - 1] = '\0'; return strs[0]; }
小结:
1)注意“字符串为空串”之类的边界情况。
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解
- LeetCode [Day 6] ZigZag Conversion 题解
- LeetCode 2: Add Two Numbers (JAVA)
- LeetCode 1: Two Sum (JAVA)