【leetcode】Longest Common Prefix

Longest Common Prefix

Write a function to find the longest common prefix string amongst an array of strings.

问题分析:

     (1)  对于这个问题,首先处理特殊字符串,对于[] 和[""]等字符串要优先处理,输出“”,对于字符串数组中只有一个字符串的情况,那么它自己本身就是最长前缀,直接输出即可。

     (2)找出字符串数组中字符串长度最低的字符串,依次作为循环判断终止条件,然后通过循环两两字符串进行对比,每次对比中,字符相同则i++,否则,i--;

     (3)特别要注意,什么时候要跳出循环,当i++发现前缀不相等,当i--发现字符串相等的时候,则就要跳出本次循环。在跳出循环后,一定要记住,将i--;

Solution:

public String longestCommonPrefix(String[] strs) {
		if(strs.length == 0)
			return "";
		
		int i = 1, j=0;
		int flag = 0;
		int min_len = strs[0].length();
		for(j = 0; j < strs.length; ++j){
			if(strs[j].length() < min_len){
				min_len = strs[j].length();
			}
		}
		if(min_len == 0)
			return "";
		for(j = 0; j < strs.length-1; ++j){
			while( i <= min_len && i > 0){
				if((strs[j].substring(0, i)).equals(strs[j+1].substring(0, i))){
					i++;
					if(flag == 1)
						break;
				}else{
					i--;
					flag = 1;
				}
			}
			if(i==0)
				break;
			else if(i > min_len || flag == 1)
				i--;
		}
		return strs[0].substring(0, i);
	 }
Conclusion:

AC:10ms


虽然击败了83.3%的java算法,但是和C++比起来还是差很多。总之,java一直都是最慢的语言!心累!

     


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值