Algorithm problem --- the longest common prefix

Topic Source: https: //leetcode-cn.com/problems/longest-common-prefix/

Write a function to find the longest common prefix string array.

If there is no common prefix, it returns an empty string "."

Example 1:

Input: [ "flower", "flow ", "flight"]
Output: "fl"
Example 2:

Input: [ "dog", "racecar ", "car"]
Output: ""
Explanation: there is no input common prefix.
Description:

All input contains only lowercase letters az.

answer:

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));

    staticPublic 
    } 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;
    }

}

Answer two:

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 ))) { 
                        the begin = to false ;
                         BREAK ; 
                    } 
                } 
                IF (the begin) { 
                    SB = sb.append (the substring); 
                } 
                IF ( first.equals (sb.toString ())) {
                     // described have all been matched to launch cycle 
                    the begin = to false ; 
                } 
                I ++ ; 
            } the catch (Exception E) {
                begin = false;
            }
        }
        return sb.length() == 0 ? "" : sb.toString();
    }

}

 

Guess you like

Origin www.cnblogs.com/ningJJ/p/11106509.html
Recommended