Bootstrap

算法练习02

一、题目

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

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

示例 1: 输入:strs =["flower" ,"flow" ,"flight"] 输出:"fl”

示例 2: 输入:strs =["dog","racecar","car" 输出:"" 解释:输入不存在公共前缀。

提示: 1<= strs.length <= 200、0<= strs[i].length<=200 strs[i]、仅由小写英文字母组成

二、实现思路

1.边界条件:如果输入数组为空或长度为0,直接返回空字符串。
2.初始前缀:假设第一个字符串是公共前缀。
3.逐个比较:遍历数组中的每个字符串,逐个更新公共前缀。
4.更新前缀:对于每个字符串,逐字符比较当前公共前缀,更新公共前缀为相同的部分。
5.返回结果:最终的公共前缀即为结果。

三、代码实现

package com.thor.test;


public class Demo {
    public static void main(String[] args) {
        /*
        * 1.题目
        * 编写一个函数来查找字符串数组中的最长公共前缀 如果不存在公共前缀,返回空字符串""
        * 示例 1: 输入:strs =["flower" ,"flow" ,"flight"] 输出:"fl”
        * 示例 2: 输入:strs =["dog","racecar","car" 输出:"" 解释:输入不存在公共前缀。
        * 提示: 1<= strs.length <= 200 、0<= strs[i].length<=200、 strs[i]仅由小写英文字母组成
        *
        * 2.实现思路
        * 边界条件:如果输入数组为空或长度为0,直接返回空字符串。
        * 初始前缀:假设第一个字符串是公共前缀。
        * 逐个比较:遍历数组中的每个字符串,逐个更新公共前缀。
        * 更新前缀:对于每个字符串,逐字符比较当前公共前缀,更新公共前缀为相同的部分。
        * 返回结果:最终的公共前缀即为结果
        * */

        //示例 1: 输入:strs =["flower" ,"flow" ,"flight"] 输出:"fl”
        //示例 2: 输入:strs =["dog","racecar","car" 输出:"" 解释:输入不存在公共前缀。
        String[] strs = {"flower", "flow", "flight"};
        System.out.println(longestCommonPrefix(strs));
        String[] strs1 = {"dog","racecar","car"};
        System.out.println(longestCommonPrefix(strs1));


    }
    public  static String longestCommonPrefix(String[] strs) {
        // 如果输入数组为空或长度为0,直接返回空字符串
        if (strs == null || strs.length == 0) {
            return "";
        }

        // 假设第一个字符串是公共前缀
        String prefix = strs[0];

        // 遍历数组中的每个字符串
        for (int i = 1; i < strs.length; i++) {
            // 逐个更新公共前缀
            while (strs[i].indexOf(prefix) != 0) {
                // 如果当前字符串不以当前前缀开头,则缩短前缀
                prefix = prefix.substring(0, prefix.length() - 1);
                // 如果前缀为空,说明没有公共前缀,返回空字符串
                if (prefix.isEmpty()) {
                    return "";
                }
            }
        }

        // 返回最终的公共前缀
        return prefix;
    }
}
;