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

 给定一个String类型数组,要求写一个方法,返回数组中这些字符串的最长公共前缀。

方法一:

import java.util.Scanner;
import java.util.logging.Logger;

import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;

public class Solution {
	public static String longestCommonPrefix(String[] strs) {
		if (strs.length == 0) return "";
		
		for (int j = 0; j < strs[0].length(); ++j){ // 纵向扫描
			for (int i = 1; i < strs.length; ++i){
				if (j == strs[i].length() ||strs[i].charAt(j) != strs[0].charAt(j))
					return strs[0].substring(0, j);
		}
		}
		return strs[0];
		}
	public static void main(String[] args) {
		String strs[] = new String[]{"abcdefg","abcef","abcdeabcg"};
		System.out.println(longestCommonPrefix(strs));
}
}

方法二:

public String longestCommonPrefix(String[] strs) {
        String result = strs.length==0?"":strs[0];
        for(int j=0;j<strs.length;j++){
            result = commonPrefix(result,strs[j]);
        }
        return result;
    }
    private String commonPrefix(String origin,String target){
        StringBuffer sb = new StringBuffer();
        int loop = origin.length()>=target.length()?target.length():origin.length();
        for(int i=0;i<loop;i++){
            if(origin.charAt(i) == target.charAt(i)){
                sb.append(origin.charAt(i));
            }else{
                break;
            }
        }
        return sb.toString();
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值