编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
这道题挺简单的 但是边界一直没找准 所以改了又改错了几次
双指针 j指针为字符串的每个字母 k从第二个字符串开始遍历
如果 strs[0][j] == strs[k][j] 那么k++ 直到遍历整个strs
如果不相等则退出两层循环 如果一直相等则j++
如果出现{"aa","a"}这种测试 前一个要比后一个长的情况 会出现数组越界 所以再加一个if条件
当j已经和str[k]的长度相等时 那么直接退出 (因为不会再有公共前缀了)
public string LongestCommonPrefix(string[] strs) { bool flag = true; string s = ""; //测试为空{ } if (strs.Length == 0) return ""; for(int j = 0; j < strs[0].Length; j++) { for(int k = 1; k < strs.Length;) { //测试{"aa","a"} if (j == strs[k].Length) { flag = false; break; } if (strs[0][j] == strs[k][j]) k++; else { flag = false; break; } } if(flag == true) { s = s + strs[0][j]; } else { break; } } return s; }