leetcode-14-最长公共前缀(longest common prefix)-java

题目及用例

package pid014;
/*最长公共前缀

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。



*/


public class main {
	
	public static void main(String[] args) {
		String [][] testTable = {{"flower","flow","flight"},{"dog","racecar","car"}};
		for (String[] ito : testTable) {
			test(ito);
		}
	}
		 
	private static void test(String[] ito) {
		Solution solution = new Solution();
		String rtn;
		long begin = System.currentTimeMillis();
		for(int i=0;i

解法1(成功,9ms,很快)
具体方法是先算出所有字符串的最小长度,在最小长度内循环
每次取第一个字符串的对应字符作基准,如果后面的与他相同,则小循环后结果加入这个,否则直接返回结果

package pid014;

import java.util.Arrays;

public class Solution {
public String longestCommonPrefix(String[] strs) {
    int num=strs.length;//num为总共几个字符串
    if(num==0){
    	return "";
    }
    if(num==1){
    	return strs[0];
    }
    int min=strs[0].length();
	for(int i=1;i

解法2(成功,3ms,较快)
与上面方法差不多,就是将记录一个stringbuilder变成只记录最后一个对应的字符的index,返回时直接substring即可

	public String longestCommonPrefix(String[] strs) {
		int size=strs.length;
		if(size==0){
			return "";
		}
		if(size==1){
			return strs[0];
		}
		//这个为所有字符串中最短的length
		int minLength=strs[0].length();
		for(int i=1;istrs[i].length()){
				minLength=strs[i].length();
			}
		}
		int index=0;
		for(int i=0;i

你可能感兴趣的:(数据结构-字符串,leetcode-初级,leetcode)