Day02:最长公共前缀

1. 题目:

编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,则返回""。

示例1:

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

示例2:

输入: ["dog","racecar","car"]
输出: ""

说明:
所有输入只包含小写字母 a-z

2. 代码实现

public class LongestCommonPrefix {

    public static void main(String[] args) {
        String[] array = {"flower","flow","flight"};
        System.out.println(getSolutionOne(array));
        System.out.println(getSolutionTwo(array));
    }

    /**
     * 横向依次比较数组中每个元素
     * 比较数组相邻两元素字符
     * @param array
     * @return
     */
    public static String getSolutionOne(String[] array){
        if(array == null||array.length == 0){
            return "";
        }else {
            String s0 = array[0];
            for(int i = 1; i < array.length; i++) {
                String si = array[i];
                int length = Math.min(s0.length(), si.length());
                int j = 0;
                while (j < length && s0.charAt(j) == si.charAt(j)) {
                    j++;
                }
                s0 = s0.substring(0, j);
            }
            return s0;
        }
    }

    /**
     * 纵向依次比较数组中每个元素
     * 比较数组所有元素的同位字符
     * @param array
     * @return
     */
    public static String getSolutionTwo(String[] array){
        if(array == null||array.length == 0){
            return "";
        }else {
            int length = array[0].length();
            for(int i = 0; i < length; i++){
                char c = array[0].charAt(i);
                for(int j = 1; j < array.length; j++){
                    if(i==array[j].length()||c!=array[j].charAt(i)){
                        return array[0].substring(0,i);
                    }
                }
            }
            return array[0];
        }
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 14 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 ...
    BeautifulSoulpy阅读 152评论 0 1
  • 问题链接 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1...
    zhyee_yan阅读 410评论 0 0
  • 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例 1:...
    wyof阅读 230评论 0 0
  • 一、问题 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串。 示例 1:输入:["f...
    Djbfifjd阅读 365评论 0 2
  • 题目描述 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例 1:输入:...
    hbhey阅读 172评论 0 0