赞
踩
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
-
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <string.h>
-
-
- // 这种遍历方式过不了力扣但能过vs编译器
- char * test(char ** strs, int strsSize)
- {
-
- char s[200]="\0";
- /*printf("%c", strs[0][0]);*/
-
- int i = 0, j =0;
- if (strsSize == 0||strs[0]=="")
- {
- return ""; //字符串数组为空,返回空字符串
- }
- if (strsSize == 1)
- {
- return strs[0];
- }
- while (1)
- {
- if (i == strsSize )
- {
- s[j] = strs[0][j];
- j++;
- i = 0;
- }
-
- if (strs[0][j] == strs[i][j])
- {
- i++;
- continue;
- }
- else if (strs[0][j] != strs[i][j])
- {
-
- break;
- }
-
- }
- /*printf("%c", strs[0][j]);*/;
-
- return s;
- }
-
-
- // 这种遍历方式能过力扣但过不了vs编译器,原因是对strs[0]进行了更改
- char * longestCommonPrefix(char ** strs, int strsSize) {
- if (strsSize == 0) return ""; //如果字符串数组为空,直接返回""
- for (int i = 0; i < strlen(strs[0]); i++) { //i表示列,strlen(strs[0])表示第一个字符串长度
- for (int j = 1; j < strsSize; j++) { //j表示行
- if (strs[0][i] != strs[j][i]) { //如果比较字符串的第i列不同,该列结束,直接跳出
- strs[0][i] = '\0';
- break;
- }
- }
- }
- return strs[0];
- }
-
-
- int main()
- {
- char* strs[3] = { "","","" };
- char s[200] = "\0";
- strcpy(s, test(strs, 3));
- //memmove(s, strs[0], 20);
- //memmove(s, s, 2);
- printf("%s", s);
- return 0;
- }
但以上两种遍历方式,一种是自己创建数组,这种能过vs过不了力扣。一种是直接对原字符串数组进行操作,能过力扣过不了vs...
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。