前言:
现在咱们对“过滤一个数组中的空字符串”大体比较注意,同学们都需要学习一些“过滤一个数组中的空字符串”的相关文章。那么小编同时在网上收集了一些有关“过滤一个数组中的空字符串””的相关文章,希望我们能喜欢,同学们快快来学习一下吧!编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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编写一个函数来查找字符串数组中的最长公共前缀 #编写一个函数来查找字符串数组中最长公共前缀的长度