[LeetCode] Longest Common Prefix

这个题没有搞清楚要考察什么,虽然在输入参数的检查上面错了几次,但还是比较容易Accept了。

public class Solution {
    public String longestCommonPrefix(String[] strs) {
		if (strs == null || strs.length == 0) {
			return "";
		}

		int minLength = strs[0].length();
		if (minLength == 0) {
			return "";
		}
		for (int i = 1; i < strs.length; ++i) {
			String str = strs[i];
			if (minLength > str.length()) {
				minLength = str.length();
			}
		}
		StringBuilder ss = new StringBuilder();
		for (int i = 0; i < minLength; ++i) {
			String s = strs[0];
			char c = s.charAt(i);
			for (int j = 1; j < strs.length; ++j) {
				if (c != strs[j].charAt(i)) {
					return ss.toString();
				}
			}
			ss.append(c);
		}
		return ss.toString();     
    }
}

反思了一下,优化成如下代码,但是运行时间似乎没有太大改进。

public class Solution {
    public String longestCommonPrefix(String[] strs) {
        if (strs == null || strs.length == 0) {
            return "";
        }
    	for (int i = 0; i < strs[0].length(); ++i) {
    		char c = strs[0].charAt(i);
    		for (int j = 1; j < strs.length; ++j) {
    		    if (i >= strs[j].length() || c != strs[j].charAt(i)) {
    		        return strs[0].substring(0, i);
    		    }
    		}
    	}
        return strs[0];        
    }
}




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值