LeetCode 14:最长公共前缀

(博主也是个小白哦,希望能帮助到你!)
编写一个函数来查找字符串数组中的最长公共前缀。

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

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

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

解法一:横向扫描

 public String longestCommonPrefix(String[] strs) {
             String ans=strs[0];//先取第一个和以后的每个字符串进行比较
             for(int i=1;i<strs.length;i++) {//遍历所有
                 for(int j=0;j<strs[i].length()&&j<ans.length();j++) {//j<ans.length()也要加上,防止数组越界
                     if(ans.charAt(j)!=strs[i].charAt(j)){//如果这两个比较的字符串有一个不一样了,break!并及时更新ans.
                         ans=ans.substring(0,j);
                         break;
                     }
                     if(ans.equals(""))//如果字符串数组中,有一个字符串是空,直接返回,无需浪费时间。
                         return ans;
                 }
             }
             return ans;

     }

图片说明
解法二:纵向扫描(与第一种思想相同,只不过横向扫描的外层循环是遍历是字符串数组,纵向扫描外层循环的是其中一个字符串)
可以先跑出最短的字符串哦~

 public static String longestCommonPrefix(String[] strs) {
         String ans=strs[0];//目标字符串
         for(int i=0;i<ans.length();i++) {//遍历目标字符串
             for(int j=1;j<strs.length&&i<strs[j].length();j++) {//遍历字符串数组,并且i<strs.length()条件防止越界
                 if(ans.charAt(i)!=strs[j].charAt(i)) {//如果不等于,直接返回!
                     return ans.substring(0,i);
                 }
             }
         }
         return ans;
     }

如有问题请留言或者加我的qq奥 1678912421~

全部评论

相关推荐

12-20 11:21
复旦大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务