淘宝客做动态广告的网站,免费的域名注册网站,京东商城网上购物下载,开网店怎么和快递合作便宜题目描述 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀#xff0c;返回空字符串 “”。
示例 1:
输入: [flower,flow,flight]
输出: fl示例 2:
输入: [dog,racecar,返回空字符串 “”。
示例 1:
输入: [flower,flow,flight]
输出: fl示例 2:
输入: [dog,racecar,car]
输出:
解释: 输入不存在公共前缀。说明:
所有输入只包含小写字母 a-z 。
我的初版解决思路为遍历数组挨个字符进行比较直到结束。代码如下
//循环遍历有两种退出条件: 1,数组最短元素 2,数组内String相同位置字符不同public String longestCommonPrefix(String[] strs) {if(strs null || strs.length 0) {return ;}StringBuilder sb new StringBuilder();boolean toEnd false;for(int i0;;i) {if(toEnd) {break;}for(String arr:strs) {if(i arr.length()) {//1,数组最短元素if(sb.length()i) {sb.deleteCharAt(i);}toEnd true;break;}if(sb.length()i) {sb.append(arr.charAt(i));}else if(sb.charAt(i) ! arr.charAt(i)) {//2,数组内String相同位置字符不同sb.deleteCharAt(i);toEnd true;break;}}}return sb.toString();}采用水平扫描法进行优化 举例 最终优化代码如下
public String longestCommonPrefix(String[] strs) {if(strs null || strs.length 0) {return ;}String prefix strs[0];for(int i0;istrs.length;i) {while(strs[i].indexOf(prefix) ! 0) {prefix prefix.substring(0, prefix.length()-1);if(prefix.isEmpty()) {return ;}}}return prefix;}代码简洁清晰了很多。 持续精进加油