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

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

示例 1:

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

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

public static   String get(String[] strs){
if (strs.length == 0){
return "";
}
if (strs.length == 1){
return strs[0];
}
String longs = "";
HashMap<Integer, String> firstMap = new HashMap<>(); HashMap<Integer, String> secondMap = new HashMap<>();
String s = strs[0];
String[] split = s.split("");
for (int i = 0; i < split.length; i++){
firstMap.put(i, split[i]);
}
for (int i = 1; i < strs.length; i++){
String string = strs[i];
String[] split1 = string.split("");
HashMap<Integer, String> tempMap = new HashMap<>();
for (int j = 0; j < split1.length; j++){
if (firstMap.size() < j+1){
continue;
}
if (firstMap.get(j).equals(split1[j])){
tempMap.put(j,split1[j]);
continue;
}else {
break;
}
}
firstMap = tempMap;
if (i == strs.length -1){
secondMap = tempMap;
}
}
if (secondMap.size() == 0){
return "";
}
for (int i = 0; i < secondMap.size(); i++){
longs += secondMap.get(i);
}
return longs;
}

官方解题:

算法

想象数组的末尾有一个非常短的字符串,使用上述方法依旧会进行 S​S​ 次比较。优化这类情况的一种方法就是水平扫描。我们从前往后枚举字符串的每一列,先比较每个字符串相同列上的字符(即不同字符串相同下标的字符)然后再进行对下一列的比较。

public String longestCommonPrefix(String[] strs) {
if (strs == null || strs.length == 0) return "";
for (int i = 0; i < strs[0].length() ; i++){
char c = strs[0].charAt(i);
for (int j = 1; j < strs.length; j ++) {
if (i == strs[j].length() || strs[j].charAt(i) != c)
return strs[0].substring(0, i);
}
}
return strs[0];
}

  第一次自己做出来。。

最新文章

  1. Android笔记——探究活动
  2. Hibernate原生SQL查询
  3. Linux vsftp配置本地用户
  4. require
  5. 【C#学习笔记】文本复制到粘贴板
  6. 深入理解java String 及intern
  7. ontimer 与多线程
  8. poj 3070 Fibonacci 矩阵快速幂
  9. ReentrantLock之非公平锁源码分析
  10. 解决springmvc中使用redirect跳转后https变为http
  11. 8 -- 深入使用Spring -- 5... Spring 3.1 新增的缓存机制
  12. Kafka.net使用编程入门(二)
  13. Centos7 在 Xshell里 vim的配置
  14. 【转载】maven入门1
  15. SWIFT解析天气JSON格式
  16. Nginx+Tomcat搭建负载均衡
  17. Ajax笔记(二)
  18. Angular(三)
  19. 简单的 nginx 多站点配置
  20. mysqld got signal 11

热门文章

  1. SpringBoot启动原理详解
  2. 【转载】C#中使用double.TryParse方法将字符串转换为double类型
  3. 【转】Flex 布局教程:语法篇
  4. 给用过SAP CRM中间件的老哥老姐们讲讲SAP CPI
  5. 使用TP5验证器遇到的坑
  6. 用navicat操作oracle新建表空间、用户名、密码
  7. CentOS 6 使用 tptables 打开关闭防火墙与端口
  8. Flask--配置文件
  9. NULLIF(EXPR1,EXPR2)
  10. 在Ubuntu系统下连接远程服务器并传输文件