题解 | #最长公共前缀#

最长公共前缀

https://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param strs string字符串一维数组
     * @return string字符串
     */
    public String longestCommonPrefix (String[] strs) {
        // write code here

        // 0.处理特殊情况
        if (strs.length == 0) {
            return "";
        }
        if (strs.length == 1) {
            return strs[0];
        }

        // 1.按照长度从小到大给strs排序
        Arrays.sort(strs, (s1, s2) -> s1.length() - s2.length());

        // 2.从0位置开始检查strs中所有字符串的情况
        int i = 0;
        boolean flag = true;
        while (i < strs[0].length() && flag) {
            // i不越界且没发现不一致
            char c = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if (strs[j].charAt(i) != c) {
                    // 发现了不一致,则最长公共前缀为strs[0]的0 ~ i-1字符
                    flag = false;
                    break;
                }
            }
            if (flag) {
                // 若发现了不一致,则不必让i自增
                i++;
            }
        }

        // 3.截取strs[0]的0 ~ i-1字符返回
        return strs[0].substring(0, i);
    }
}

全部评论

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
点赞 评论 收藏
分享
05-12 17:00
门头沟学院 Java
king122:你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞 评论 收藏
分享
代码飞升:别用口语,后端就写后端,前端就写前端,最后别光后悔
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务