题解 | #最长公共前缀# 小白能听懂!一定能!

最长公共前缀

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);
            // 拿着这个字符 与 数组剩余的字符串比较 对应下标的位置看看是否相等! 如果剩余字符串对应的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();
    }
}
全部评论

相关推荐

Pandaileee:校友加油我现在也只有一个保底太难了
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务