本文主要是介绍《leetCode》:Longest Common Prefix,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
Write a function to find the longest common prefix string amongst an array of strings.
大意就是寻找字符串数组中所有字符的最大公共子串。
思路比较简单:就是通过遍历来判断是否所有字符均相同。
实现代码如下:
int findMinStrLen(char **strs,int strsSize){if(strs==NULL||strsSize<1){return NULL;}int minLen=strlen(strs[0]);for(int i=1;i<strsSize;i++){int len=strlen(strs[i]);if(minLen>len){minLen=len;}}return minLen;
}
//检查长度为strsSize的字符串数组strs中在index下标是否全部相同
bool sameAllStrs(char **strs,int strsSize,int index){if(strs==NULL||strsSize<1||index<0){return false;}char ch=strs[0][index];for(int i=1;i<strsSize;i++){char temp=strs[i][index];if(ch!=temp){return false;}}return true;}
char* longestCommonPrefix(char** strs, int strsSize) {if(strs==NULL||strsSize<1){return "";}//寻找最长的公共字符前缀,通过遍历即可//先确定最短的字符串的长度。int minLen=findMinStrLen(strs,strsSize);int index=0;//用来保存有多少个相同的字符while(index<minLen){if(sameAllStrs(strs,strsSize,index)){index++;}else{break;}}if(index==0){//这种情况没有相同的return "";}//将前index个字符取出来,并输出,注意最后一位要放入字符'\0'才行char *str=(char *)malloc((index+1)*sizeof(char));for(int i=0;i<index;i++){str[i]=strs[0][i];}str[index]='\0';return str;
}
这篇关于《leetCode》:Longest Common Prefix的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!