zoukankan      html  css  js  c++  java
  • longestCommonPrefix

    Description:

    Write a function to find the longest common prefix string amongst an array of strings.

    Thoughts:

    1.定义一个结果字符串result="";

    2.如果List的长度为0,那么直接返回result;

    3.找到数组中最短的字符串min_str;

    4.将min_str从索引为0开始的字符,逐一的和其他的字符串的相应位置的字符进行比较

    5.如果所有字符串当前的字符都是一致的话,就将当前字符append到result中;否则的话返回result;

    6.重复过程4,5直到min_str全部比较完成

    以下是我的java代码

    package easy;
    
    public class LongestCommonPrefix {
        /*返回长度最短的字符串在List中所在的位置*/
        private static int shortestStringLength(String[] strs){
            
            //判断当前的List中是否有字符串,没有的话返回-1,否则返回当前list中长度最短的字符串所在的位置
            if(strs.length == 0){
                return -1;
            }else{
                int result = strs[0].length();
                int record = 0;
                for(int i = 1; i<strs.length;i++){
                    if(result>strs[i].length()){
                        result = strs[i].length();
                        record = i;
                    }
                }
                return record;
            }
            
        }
        
        public static String longestCommonPrefix(String[] strs){
            String result = "";
            int m = shortestStringLength(strs);
            /*shortestStringLength的返回值等于-1,说明strs中没有字符串,结果为空;
             * 否则的话,利用最短的字符串,逐个的比较其他的字符串是否包含当前最短字符串的前缀。从而不断地增加前缀的长度。
            */
            if(m == -1){
                return result;
            }else{
                int n = strs.length;
                for(int i = 0;i<strs[m].length();i++){
                    char a = strs[m].charAt(i);
                    for(int j = 0; j< n;j++){
                        if(a != strs[j].charAt(i)){
                            return result;
                        }
                    }
                    result = result+a;
                }
                return result;
            }
            
        }
        
        public static void main(String[] args){
            String[] strs = new String[]{"ac","ac","a","a"};
            String result = longestCommonPrefix(strs);
            System.out.println(result);
        }
    }
  • 相关阅读:
    40 修改了机器名,portal重装后,还需要做什么?
    39 路径分析小练习
    38 空间查询小练习
    面向对象一些概念简述
    Js函数基本介绍
    JS中的变量和数据类型
    js基础语法
    Css样式优先级
    对响应式布局的理解和认知
    关于Flex布局
  • 原文地址:https://www.cnblogs.com/whatyouknow123/p/7482887.html
Copyright © 2011-2022 走看看