[size=large][color=darkred][b]题目描述[/b][/color][/size]
Write a function to find the longest common prefix string amongst an array of strings.
[size=large][color=darkred][b]解题思路[/b][/color][/size]
本题要求找出所有字符串的公共前缀。思路是利用set的所有元素的唯一性,首先找到所有的可能子串,然后确定是否为公共子串。
[size=large][color=darkred][b]相关知识点[/b][/color][/size]
[size=medium][b](1)Java中的set遍历[/b][/size]
[color=darkblue][b]注意:当在遍历过程中需要对set进行删除等改变set结构的时,一定要使用iterator这种方式。具体原因参见:[/b][/color][url]http://fine36.blog.163.com/blog/static/189251005201258113857343/[/url]
[size=medium][b](2)Java中的set[/b][/size]
[size=large][color=darkred][b]自己的代码[/b][/color][/size]
Write a function to find the longest common prefix string amongst an array of strings.
[size=large][color=darkred][b]解题思路[/b][/color][/size]
本题要求找出所有字符串的公共前缀。思路是利用set的所有元素的唯一性,首先找到所有的可能子串,然后确定是否为公共子串。
[size=large][color=darkred][b]相关知识点[/b][/color][/size]
[size=medium][b](1)Java中的set遍历[/b][/size]
1.迭代遍历:
Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
String str = it.next();
System.out.println(str);
}
2.for循环遍历:
for (String str : set) {
System.out.println(str);
}
[color=darkblue][b]注意:当在遍历过程中需要对set进行删除等改变set结构的时,一定要使用iterator这种方式。具体原因参见:[/b][/color][url]http://fine36.blog.163.com/blog/static/189251005201258113857343/[/url]
[size=medium][b](2)Java中的set[/b][/size]
Set<String> set = new HashSet<String>();
[size=large][color=darkred][b]自己的代码[/b][/color][/size]
package leetcode;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class LongestCommonPrefix {
public String longestCommonPrefix(String[] strs) {
Set<String> set = new HashSet<String>();
//将每个str的所有的可能添加到set中
for(int times = 0; times < strs.length; times++){
String str = strs[times];
String tempStr = "";
for(int i = 0; i < str.length(); i++){
tempStr += str.charAt(i);
set.add(tempStr);
}
}//System.out.println(set.toString());
//判断所有str的commonPrefix
Iterator<String> it = set.iterator();
while(it.hasNext()){
String commonPrefix = it.next();
for(int i = 0; i < strs.length; i++){
if(!strs[i].startsWith(commonPrefix)) {
it.remove();
break;
}
}
}
//返回longestCommonPrefix
if(set.size() == 0) return "";
String commonPrefix = "";
for(String s : set){
if(s.length() > commonPrefix.length()) commonPrefix = s;
}
return commonPrefix;
}
public static void main(String[] args) {
String[] strs = {
"abc",
"abd",
"akc"
};
LongestCommonPrefix lcp = new LongestCommonPrefix();
System.out.println(lcp.longestCommonPrefix(strs));
}
}