【java算法刷题 20-2】leetcode:题目14. 最长公共前缀

93 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第 天,点击查看活动详情

【java算法刷题 20-2】leetcode:题目14. 最长公共前缀。

坚持就是胜利!


题目、14. 最长公共前缀

原题链接:14. 最长公共前缀

题目描述

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

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

示例 1:

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

输出:"fl"

/

示例 2:

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

输出:""

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

解题思路: 题目要求返回字符串数组中元素的最长公共前缀,那么我们可以将每一个字符串元素的相同位置字符进行比较:

全部相同则继续向后比较。 字符串相同位置的字符不等,返回最长公共前缀,即前面遍历过的字符串字符。 当某个字符串元素被完全遍历完,说明它就是最长公共前缀。

按照上述思路,问题就解决了。

提交代码

class Solution {
    public String longestCommonPrefix(String[] strs) {
        int n = strs.length;   //获取字符串数组长度
        if(strs == null || n == 0) return "";//为空或没有元素,返回空字符串
 
        int count = strs[0].length();        //获取首字符串元素的长度

        for(int i = 0;i < count;++i){        //遍历字符串数组
            char c = strs[0].charAt(i);      //记录首字符串元素的各个字符
            for(int j = 1;j < n;++j){        //遍历各字符串元素相同位置的字符
            //当遇到不相同额字符 或 某个字符串元素被遍历完
                if(i == strs[j].length() || strs[j].charAt(i) != c)
                //返回当前长度的公共前缀
                    return strs[0].substring(0, i);        
            }
        }

        return strs[0];//如果元素长度为1,直接返回
    }
}


提交结果

在这里插入图片描述