题目描述:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
解题思路:
首先,新建立一个字符数组,用于存储公共前缀,并且将其初始化为0.
如果字符串的长度为1,则返回该字符串,如果字符串的长度小于1,返回该字符串的指针。
接着开始遍历字符串,如果前一个字符串的某一个位置上的元素和后一个字符串上的相同位置的元素不相同,则返回新创建字符数组的地址。
将第一个字符串上的第一个元素作为公共前缀的第一个字符,进行下一轮循环。
最后返回新创建的字符数组的数组名。
相关话题:字符串
char * longestCommonPrefix(char ** strs, int strsSize){
char *str = (char*)malloc(sizeof(char)*128);
memset(str, 0,128);
if(strsSize < 1) return str;
if(strsSize == 1) return *(strs);
int i = 0,j = 0;
while(strs[i][j] != '\0'){
for(int i = 0; i < strsSize - 1; i++){
if(strs[i][j] != strs[i+1][j]) return str;
}
str[j] = strs[0][j];
j++;
}
return str;
}
总结:对于数组和指针的相互转化问题一直是数组,字符串和指针考察的重点,应该深入了解他们之间的关系。