LeetCode-最长公共前缀


LeetCode-最长公共前缀

LeetCode-最长公共前缀

Table of Contents

1 Easy-最长公共前缀

1.1 题目描述

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

1.2 示例 1:

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

输出: "fl"

1.3 示例 2:

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

输出: ""

解释: 输入不存在公共前缀。

1.4 说明:

所有输入只包含小写字母 a-z 。

2 自己的答案

2.1 思路

  1. 以第一个字符串为示例,找出相同的最长前缀
  2. 首先判断输入的字符串数组是否为空,空则返回空字符串
  3. 用双层循环进行比较,第一层循环为遍历字符串数组,第二层循环遍历字符串的每个字符,与first字符串的字符进行比较
  4. 用一个int变量rec记录当前字符串与first匹配的索引位置并跳出循环,并以rec作为下一次遍历的范围,遍历下一个字符串
  5. 如果遍历i大于字符串长度,则同样用rec记录当前索引,并跳出内层循环
  6. 最后返回first字符串的子字符串,范围为0~rec

2.2 代码

package algorithm.easy;

public class LongestCommonPrefix {
    public static String longestCommonPrefix(String[] strs) {
        if (strs.length < 1) {
            return "";
        }
        String first = strs[0];
        // rec记录其余字符串与第一个字符串相同的长度
        int rec = first.length();


        for (String str : strs) {
            for (int i = 0; i < rec; i++) {
                // i的长度等于其余字符串长度时,遍历下一个字符串
                if (i >= str.length())  {
                    rec = i;
                    break;
                }
                if (str.charAt(i) != first.charAt(i)) {
                    // 遍历数组下字符串的范围变小
                    rec = i;
                    // 到下一个字符串
                    break;
                }
            }
        }
        // 直接返回记录索引结果
        return first.substring(0,rec);
    }

    public static void main(String[] args) {
        String[] strs = new String[] {"flower","flow","flight"};
        String[] strs2 = new String[] {"dog","racecar","car"};
        String[] strs3 = new String[] {"aa", "a"};
        System.out.println(longestCommonPrefix(strs));
        System.out.println(longestCommonPrefix(strs2));
        System.out.println(longestCommonPrefix(strs3));
    }
}

Date: 2018-10-27 21:14

Author: devinkin

Created: 2018-10-27 六 21:30

Validate

优质内容筛选与推荐>>
1、STM32模拟I2C
2、99.99系统稳定性
3、写给运维兄弟
4、Jquery学习笔记 - 选择器
5、注解Demo


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn