当前位置:   article > 正文

C语言力扣第十四题之最长公共前缀。暴力遍历法_c语言遍历char.*

c语言遍历char.*

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

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

示例 1:

输入:strs = ["flower", "flow", "flight"]
输出:"fl"

示例 2:

输入:strs = ["dog", "racecar", "car"]
输出:""
解释:输入不存在公共前缀。

提示:

1 <= strs.length <= 200
0 <= strs[i].length <= 200
strs[i] 仅由小写英文字母组成

来源:力扣(LeetCode)
链接:https ://leetcode.cn/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <string.h>
  4. // 这种遍历方式过不了力扣但能过vs编译器
  5. char * test(char ** strs, int strsSize)
  6. {
  7. char s[200]="\0";
  8. /*printf("%c", strs[0][0]);*/
  9. int i = 0, j =0;
  10. if (strsSize == 0||strs[0]=="")
  11. {
  12. return ""; //字符串数组为空,返回空字符串
  13. }
  14. if (strsSize == 1)
  15. {
  16. return strs[0];
  17. }
  18. while (1)
  19. {
  20. if (i == strsSize )
  21. {
  22. s[j] = strs[0][j];
  23. j++;
  24. i = 0;
  25. }
  26. if (strs[0][j] == strs[i][j])
  27. {
  28. i++;
  29. continue;
  30. }
  31. else if (strs[0][j] != strs[i][j])
  32. {
  33. break;
  34. }
  35. }
  36. /*printf("%c", strs[0][j]);*/;
  37. return s;
  38. }
  39. // 这种遍历方式能过力扣但过不了vs编译器,原因是对strs[0]进行了更改
  40. char * longestCommonPrefix(char ** strs, int strsSize) {
  41. if (strsSize == 0) return ""; //如果字符串数组为空,直接返回""
  42. for (int i = 0; i < strlen(strs[0]); i++) { //i表示列,strlen(strs[0])表示第一个字符串长度
  43. for (int j = 1; j < strsSize; j++) { //j表示行
  44. if (strs[0][i] != strs[j][i]) { //如果比较字符串的第i列不同,该列结束,直接跳出
  45. strs[0][i] = '\0';
  46. break;
  47. }
  48. }
  49. }
  50. return strs[0];
  51. }
  52. int main()
  53. {
  54. char* strs[3] = { "","","" };
  55. char s[200] = "\0";
  56. strcpy(s, test(strs, 3));
  57. //memmove(s, strs[0], 20);
  58. //memmove(s, s, 2);
  59. printf("%s", s);
  60. return 0;
  61. }

但以上两种遍历方式,一种是自己创建数组,这种能过vs过不了力扣。一种是直接对原字符串数组进行操作,能过力扣过不了vs...

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/446056
推荐阅读
  

闽ICP备14008679号