牛客Top200---最长公共前缀(java)
Posted 小样5411
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客Top200---最长公共前缀(java)相关的知识,希望对你有一定的参考价值。
题目
分析
这题可以用一个技巧,首先最长公共前缀是取决于什么的?那就是最长的那个字符串,和最短的那个字符串,取这两个字符串的公共部分。
例1 [“abca”,“abc”,“abca”,“abc”,“abcc”]
最长的是"abcc",一样长的比ASCI,而最短的是"abc",那么就只要计算这两个的公共部分,也就是"abc"
例2 [“fl”,“flen”,“flow”,“fole”,“fpower”]
最长的是"fpower",最短的是"fl",那么公共就是比较两者,只有一个相同,那么就返回"f"
例3 [“a”,“b”]
两个都不一样,无公共的,就返回 “”
等等,都是这样,我们先做一个排序,然后取第一个和最后一个,也就是最长与最短,统计两个相同的部分(公共前缀)
代码
import java.util.*;
public class Solution {
public String longestCommonPrefix (String[] strs) {
//首先判断是否为空
if(strs == null || strs.length == 0){
return "";//无公共前缀
}
//只有一个字符串,返回本身即可
if(strs.length == 1){
return strs[0];
}
Arrays.sort(strs);
String shortest = strs[0];//最短字符串
String longest = strs[strs.length - 1];//最长字符串
int i = 0;//记录公共部分索引
String same = "";
//最短字符串遍历完毕,则退出
while(i < shortest.length()){
//对应位置是否相等,求公共部分
if(shortest.charAt(i) == longest.charAt(i)){
same += shortest.charAt(i);//合并公共字符
i++;
}else{
break;//只要不相等,就跳出
}
}
return same;
}
}
以上是关于牛客Top200---最长公共前缀(java)的主要内容,如果未能解决你的问题,请参考以下文章