龙空技术网

每日一题02:找出字符串数组中的最长公共前缀

努力的椰子 232

前言:

现在咱们对“过滤一个数组中的空字符串”大体比较注意,同学们都需要学习一些“过滤一个数组中的空字符串”的相关文章。那么小编同时在网上收集了一些有关“过滤一个数组中的空字符串””的相关文章,希望我们能喜欢,同学们快快来学习一下吧!

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

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

示例 1:

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

输出: "fl"

示例 2:

输入: ["dog","racecar","car"]

输出: ""

解释: 输入不存在公共前缀。

说明:

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

解题思路

1、公共前缀的概念是只字符串开头重复的部分,所有字符串中最长的前缀是数组中字符串最短字符串。

2、然后判断字符串在数组中所有字符串中的首次出现的位置,如果位置存在位置不是0的情况,则不符合,去掉目标字符串最后一位,再次比较,直到找出完全匹配的结果

3、如果没有任务匹配结果,则字符串长度为空串。

4、异常判断:输入的字符串数组长度为0,输入数组中最短字符串长度为0的情况,则返回空串

代码函数

public String longestCommonPrefix(String[] strs) { String result = ""; //遍历数组找到数组中,字符串长度最短的的串 if(strs.length<=0){ 	return result; } int length = strs[0].length(); String str = "";  for(int i=0;i<strs.length;i++){ 	length = length < strs[i].length()?length:strs[i].length(); 	str = length < strs[i].length()?str:strs[i]; } if(length == 0){ 	return result; } //把最短的字符串与其他字符串进行indexof 操作,如果所有字符串都包含则为最长字符串,如果不存在,则缩短字符串,然后继续尝试 for(int j=length;j>0;j--){ 	int m = 0; 	boolean flag = true; 		String u = str.substring(m, m+j); 		for(String h : strs){ 		if(h.indexOf(u) != 0){ 			flag = false; 			break; 		} 	} 		if(flag){ 			result = u; 			break; 		} } return result; }

结果

每天进步1%,坚持学习。只要你一刻不停,坚持下去,你将难以想象自己能取得多么伟大的成就。欢迎和椰子一起交流,克服懒惰。

标签: #过滤一个数组中的空字符串 #求两字符串中的最大公共字符串个数及公共字符串 #js编写一个函数来查找字符串数组中的最长公共前缀 #编写一个函数来查找字符串数组中最长公共前缀的长度