LeetCode最长公共前缀

Dear 丶 2021-09-15 13:54 445阅读 0赞

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

  1. 输入: ["flower","flow","flight"]
  2. 输出: "fl"

示例 2:

  1. 输入: ["dog","racecar","car"]
  2. 输出: ""
  3. 解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z

函数的原型为 char* longestCommonPrefix(char** strs, int strsSize)

原谅我不喜欢用指针,但是用数组也是相同的意思。在这里,如果有多个字符串的时候,我们是不是可以以第一个字符串为基准,其他字符串和这个字符串做比较。在这里,我们结束程序的条件是,其他字符串的元素和第一个字符串的元素不想等是,则return;代码如下:

  1. char* longestCommonPrefix(char** strs, int strsSize)
  2. {
  3. int i,j,flag;
  4. char ch;
  5. if(strsSize==1)
  6. return *strs;
  7. if(strsSize==0)
  8. return "";
  9. for(i=0;;i++)
  10. {
  11. flag=0;
  12. ch=strs[0][i];
  13. for(j=1;j<strsSize;j++)
  14. {
  15. if( ch!=strs[j][i])
  16. {
  17. flag=1;
  18. break;
  19. }
  20. }
  21. if(flag==1)
  22. break;
  23. }
  24. if(i==0)
  25. return "";
  26. char *p=malloc(sizeof(char)*i);
  27. for(j=0;j<i;j++)
  28. {
  29. p[j]=strs[0][j];
  30. }
  31. p[j]='\0';
  32. return p;
  33. }

发表评论

表情:
评论列表 (有 0 条评论,445人围观)

还没有评论,来说两句吧...

相关阅读