• 算法题---最长公共前缀


    题目来源:https://leetcode-cn.com/problems/longest-common-prefix/

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

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

    示例 1:

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

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

    所有输入只包含小写字母 a-z 。

    解答:

    package com.zx.leetcode.longestcommonprefix;
    
    /**
     * @Author JAY
     * @Date 2019/6/29 13:30
     * @Description 最长公共前缀
     **/
    public class SolutionV2 {
    
        public static void main(String[] args) {
    //        String[] str = {"dog","dracecar","dcar"};
    //        String[] str = {"flower","flow","flight"};
            String[] str = {"flow","flow2","flow3","flight"};
    //        String[] str = {"1flow","2flow","flow"};
            System.out.println(longestCommonPrefix(str));
        }
    
        public static String longestCommonPrefix(String[] strs) {
            if (strs.length == 0){
                return "";
            }
            String s = strs[0];
            for (int i = 1; i < strs.length; i++) {
                while (strs[i].indexOf(s) != 0){
                    s = s.substring(0,s.length() - 1);
                    if (s.isEmpty()){
                        return "";
                    }
                }
            }
            return s;
        }
    
    }

    解答二:

    package com.zx.leetcode.longestcommonprefix;
    
    /**
     * @Author JAY
     * @Date 2019/6/29 13:30
     * @Description 最长公共前缀
     **/
    public class Solution {
    
        public static void main(String[] args) {
    //        String[] str = {"dog","dracecar","dcar"};
    //        String[] str = {"flower","flow","flight"};
    //        String[] str = {"flow","flow","flow"};
            String[] str = {"1flow","2flow","flow"};
            System.out.println(longestCommonPrefix(str));
        }
    
        public static String longestCommonPrefix(String[] strs) {
    
            if(strs == null || strs.length == 0){
                return "";
            }
    
            boolean begin = true;
            StringBuilder sb = new StringBuilder();
            int i = 0;
            int length = strs.length;
            String first = strs[0];
    
            while (begin){
                try {
                    String substring = first.substring(i, i + 1);
                    for (int index = 1; index < length; index++){
                        if (!substring.equals(strs[index].substring(i,i+1))){
                            begin = false;
                            break;
                        }
                    }
                    if (begin){
                        sb = sb.append(substring);
                    }
                    if (first.equals(sb.toString())){
                        //说明已经全部匹配到了,推出循环
                        begin = false;
                    }
                    i++;
                }catch (Exception e){
                    begin = false;
                }
            }
            return sb.length() == 0 ? "" : sb.toString();
        }
    
    }
  • 相关阅读:
    Remote desktop manager共享账号
    content is not supported outside 'script" or asp content' region
    How to pass values across the pages in ASP.net without using Session
    GitLab Flow
    C#如何获取系统downloads和documents路径
    sql server查询结果复制出来,没有换行(存进去的数据是换行的)
    Type Interceptors
    JsonNode、JsonObject常用方法
    java获取当前时间戳的方法
    Java中float/double取值范围与精度
  • 原文地址:https://www.cnblogs.com/ningJJ/p/11106509.html
Copyright © 2020-2023  润新知