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


    题目来源: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();
        }
    
    }
  • 相关阅读:
    编程语言扮演的3个角色,它连接了机器、开发者以及团队!
    20行代码爬取王者荣耀全英雄皮肤!让你享受白嫖的快乐!
    3分钟教会你如何发布Qt程序!高级编程界面开发也是如此的简单!
    C 语言实现一个简单的 web 服务器!了解 Socket 通讯工作原理!
    log4j
    解决MySQL 一闪而过的情况
    subversion和客户端的应用
    Map集合
    代码块执行顺序。
    ArrayList-VS-LinkedList
  • 原文地址:https://www.cnblogs.com/ningJJ/p/11106509.html
Copyright © 2020-2023  润新知