【力扣14】最长公共前缀

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

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

示例 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;
            
        }

 

posted @ 2019-11-08 13:35  An_Wen  阅读(205)  评论(0编辑  收藏  举报