题解 | #最长公共前缀# 数组中的最长公共前缀!小白能懂!

最长公共前缀

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

import java.util.*;


public class Solution {
    /*
      解题思路:
          我们假设数组的首元素就是最长公共前缀。那么就需要验证。怎么验证?
          遍历这个首字符串元素,没遍历出一个字符,就拿着这个字符 与 数组剩余后面的字符串对应的位置看看是否相等。
          如果都相等!说明当前验证的这个字符是符合的。添加到结果集中。
          如果说不相等 或者 当前遍历出这个字符的下标 超过 后面字符串的任何一个长度都说明是不符合的。
          直接 终止程序!
          
    */
    public String longestCommonPrefix (String[] strs) {
        // 定义结果集
        StringBuilder res = new StringBuilder();
        // 数组性校验,如果为空直接终止了。
        if(strs.length==0) return res.toString();
        
        // 假设首元素就是最长公共前缀
        String firstStr=strs[0];
        // 遍历这个首元素
        for(int i=0;i<firstStr.length();i++){
            // 每遍历一次,获取对应下标的字符。
            char c = firstStr.charAt(i);
            // 没拿出当前字符的c ,就与后面字符串对应的i位置比较。 只要不相等或者 i 超过某个字符串的长度就终止
            for(int j=1;j<strs.length;j++){
                String nextStr=strs[j];
                if(!(i<nextStr.length() && c==nextStr.charAt(i))){
                    // 不符合
                    return res.toString();
                }
            }
            // 程序能执行到此处,说明当前字符是符合结果集的
            res.append(c);
        }
        return res.toString();
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务