题解 | 最长公共前缀

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param strs string字符串一维数组
     * @return string字符串
     */
    public String longestCommonPrefix (String[] strs) {
        //遍历所有字符串,在每个字符串中拿到第一个字符,判断所有的字符是否相同,都相同的话记下索引
        //公共的字符串长度不可能超过任何一个字符串的长度,我们以第一个字符串的长度来作为外层循环进行遍历每个字符
        if (strs == null || strs.length == 0) {
            return "";
        }
        String fir = strs[0];
        int n = fir.length();
        int strsLen = strs.length;
        for (int i = 0; i < n; i++) {
            char curr = fir.charAt(i);
            for (int j = 1; j < strsLen; j++) {
                String nextStr = strs[j];
                if (nextStr.length() < i + 1) {
                    return fir.substring(0, i);
                }
                char next = strs[j].charAt(i);
                if (curr != next) {
                    return fir.substring(0, i);
                }
            }
        }
        return strs[0];
    }
}

注意考虑输入参数的几种特殊情况:

1、字符串数组为空

2、字符串数组存在一个空串

3、字符串数组存在两个空串

4、字符串数组存在一个字符串(根据上题,仅有一个字符串时不会进入第二个for循环,因此循环中的return不会触发,因此需要在函数最后直接返回数组第一个字符串[自己第一次写的答案错在了此处])

全部评论

相关推荐

评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务