zoukankan      html  css  js  c++  java
  • 算法题---最长公共前缀

    题目来源: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();
        }
    
    }
  • 相关阅读:
    从客户端(Content="<p>666</p>")中检测到有潜在危险的 Request.Form 值。
    VS插件集
    Carmack在QUAKE3中使用的计算平方根的函数
    自动匹配HTTP请求中对应实体参数名的数据(性能不是最优)
    webapi单元测试时出现的ConfigurationManager.ConnectionStrings为空错误
    @@IDENTITY在加触发器时返回错误的ID值
    Protobuf完整实例
    Apache配置多个监听端口和不同的网站目录的简单方法[转]
    ThinkPHP 小技巧
    复选框 ajax取得后台页面
  • 原文地址:https://www.cnblogs.com/ningJJ/p/11106509.html
Copyright © 2011-2022 走看看