Longest Common Prefix leetcode java
题目:
Write a function to find the longest common prefix string amongst an array of strings.
题解:
解题思路是,先对整个String数组预处理一下,求一个最小长度(最长前缀肯定不能大于最小长度)。
然后以第0个字符串作为参照,从第1个字符串到最后一个字符串,对同一位置做判断,有不同字符串返回当前记录的字符串就行。
我的代码如下,不是那么简洁好看,下面有个整理的更好一些:
1 private static int MinLength(String[] strs) {
2 int temp = Integer.MAX_VALUE;
3 for(int i=0; i<strs.length;i++){
4 if(temp>strs[i].length())
5 temp = strs[i].length();
6 }
7 return temp;
8 }
9
public static String longestCommonPrefix(String[] strs) {
if(strs.length==0){
return "";
}
int j = 0;
boolean flag = false;
int length = MinLength(strs);
while(j<length){
int i = 1;
while(i<strs.length){
int c = strs[0].charAt(j);
if(strs[i].charAt(j)==c){
i++;
}else{
flag = true;
break;
}
}
if(flag)
break;
j++;
}
return strs[0].substring(0, j);
}
更简洁的代码:
1 private int minlen(String[] strs) {
2 int min = Integer.MAX_VALUE;
3 for(int i=0; i<strs.length;i++)
4 min = Math.min(min,strs[i].length());
5 return min;
6 }
7
8 public String longestCommonPrefix(String[] strs) {
9 if (strs == null || strs.length == 0)
return "";
StringBuilder res = new StringBuilder();
int index = 0;
int len = minlen(strs);
while (index < len){
for (int i=1; i<strs.length;i++){
if (strs[i].charAt(index) != strs[0].charAt(index))
return res.toString();
}
res.append(strs[0].charAt(index));
index++;
}
return res.toString();
}
Reference:http://blog.csdn.net/linhuanmars/article/details/21145733
-------------------
更新
空间复杂度更小的代码如下(from discussion):
1 public String longestCommonPrefix(String[] strs) {
2 if(strs.length == 0||strs == null)
3 return "";
4
5 for(int i = 0; i<strs[0].length(); i++){
6 char x = strs[0].charAt(i);
7 for(int j = 1; j<strs.length; j++){
8 if(strs[j].length() == i || strs[j].charAt(i) != x)
9 return strs[0].substring(0,i);
}
}
return strs[0];
}
Longest Common Prefix leetcode java的更多相关文章
- Longest Common Prefix [LeetCode 14]
1- 问题描述 Write a function to find the longest common prefix string amongst an array of strings. 2- 思路 ...
- Longest common prefix | leetcode
Write a function to find the longest common prefix string amongst an array of strings. 思路:要去是寻找字符串ve ...
- 「Leetcode」14. Longest Common Prefix(Java)
分析 与其说是算法题,不如说是语言特性题. 这题要是对Java的String相关函数掌握的比较熟练,写起来的速度(各种意义上)就会很快. 大致的思路都是一致的,差不到哪里去,无非是枚举长度.值得一提的 ...
- 【JAVA、C++】LeetCode 014 Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. 解题思路: 老实遍历即可, ...
- Java [leetcode 14] Longest Common Prefix
小二好久没有更新博客了,真是罪过,最近在看linux的东西导致进度耽搁了,所以今晚睡觉前怒刷一题! 问题描述: Write a function to find the longest common ...
- LeetCode第[14]题(Java): Longest Common Prefix
题目:最长公共前缀 难度:EASY 题目内容: Write a function to find the longest common prefix string amongst an array o ...
- [LeetCode][Java] Longest Common Prefix
题目: Write a function to find the longest common prefix string amongst an array of strings. 题意: 写出一个函 ...
- [LeetCode] Longest Common Prefix 最长共同前缀
Write a function to find the longest common prefix string amongst an array of strings. 这道题让我们求一系列字符串 ...
- [LeetCode] 14. Longest Common Prefix 最长共同前缀
Write a function to find the longest common prefix string amongst an array of strings. If there is n ...
随机推荐
- 【GO基础】神奇的iota特殊常量
最近在学习GO语言,然后发现有一个特殊常量是以前没有接触过的,比较感兴趣,这里给大家介绍一下. iota,特殊常量,可以被认为是一个可以被编译器修改的常量. 核心概念:iota在const关键字出现时 ...
- poj3349(hash table)
做的第一道哈希表的题目.速度很慢,跑了3000+ms.采用六条边的和对一个大质数的余数作为哈希表的key,理论上质数取得越大,消耗的空间就越大,但是速度会加快,这里取了14997.地址冲突用链表解决. ...
- 利用python实现新浪微博爬虫
第一个模块,模拟登陆sina微博,创建weiboLogin.py文件,输入以下代码: #! /usr/bin/env python # -*- coding: utf-8 -*- import sys ...
- TS Stream 详解
<什么是TS> TS(transport stream) , TS流文件,是一种DVD的文件格式,TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的,这种特性就决定了T ...
- Qt中使用Json
Qt中使用Json需要一下几个类: QJsonValue 代表了json格式中的一个值 QJsonObject 代表了json格式的一个对象 QJsonArra ...
- 使用IIS实现反向代理
IIS的反向代理是通过ARR模块来完成的,ARR模块需要另外安装,而且只能通过Web PlatForm Installer安装.关于安装来源与步骤,帖子已有很多,不做描述.启用“Application ...
- N!(N的阶乘)最末位非0的求解方法
问题是求关于N!的最后一位非0位, 如3!=6,最后一位非0位为6, 5!=120, 最后一位非0位为2.怎么样快速的求出最后一位非0位呢? 最朴素的想法就是先求出N!的结果,再求出结果的最后一位非0 ...
- Codeforces Round #354 (Div. 2) A. Nicholas and Permutation 水题
A. Nicholas and Permutation 题目连接: http://www.codeforces.com/contest/676/problem/A Description Nichol ...
- 手把手教你搭建Docker私有仓库
章节一:centos7 docker安装和使用_入门教程 章节二:使用docker部署Asp.net core web应用程序 有了前面的基础,接下来的操作就比较简单了.先准备两台虚拟机,两台机器上都 ...
- C#情怀与未来,怨天尤人还是抓住机会,能否跟上dnc新时代浪潮?
C#情怀与未来,怨天尤人还是抓住机会,能否跟上dnc新时代浪潮? 经常看到有.NET圈子在讨论是否应该转其它语言 C#情怀是一方面,如果觉得C#未来没前途,光靠情怀是撑不住的, 建议对C#未来 ...