前言:
在这里推荐一下我的公众号吧,,专注于Golang相关技术;Golang面试、Beego、Gin、Mysql、Linux、网络、操作系统等。有需要的小伙伴可以关注一下 ,每天观看优质文章。没有使用这门语音,也可以关注一下,提前了解一下,相信你会爱上这门语言。
添加方式:公众号搜索 Golang梦工厂 或 扫描下方二维码
1. 题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例1:
输入: ["flower","flow","flight"]
输出: "fl"
示例2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
2. 解题思路
首先我们先考虑特殊情况,当字符串数组长度为0时则公共前缀为空,直接返回。
因为是求最长公共前缀,我们可以先选出来一个基准值prefix作为第一个最长公共前缀,进行初始化。然后遍历后面的字符串,依次将其与prefix进行比较,在两两找出公共前缀,最终结果就是最长公共前缀,在遍历过程中,如果出现了prefix为空的情况,则公共前缀不存在直接返回即可。
3. 代码样例
1. java
package com.asong.leetcode.easy;
public class longestCommonPrefix_14 {
public String longestCommonPrefix(String[] strs){
if (strs == null || strs.length==0)
{
return "";
}
String prefix = strs[0]; // 选一个前缀
for (int i = 1;i<strs.length;i++)
{
int j = 0;
for (;j<prefix.length()&&j<strs[i].length();j++)
{
if(prefix.charAt(j)!=strs[i].charAt(j))
{
break;
}
}
prefix = prefix.substring(0,j);
if (prefix.equals("")) //前缀为空了 则直接退出
{
return prefix;
}
}
return prefix;
}
}
2. Go
package longestCommonPrefix_14
import (
"strings"
)
/**
最长公共前缀
*/
func longestCommonPrefix(strs []string) string{
if len(strs)==0{
return ""
}
//选出基准前缀
prefix :=strs[0]
for _,k:= range strs{
for strings.Index(k,prefix) !=0 {
if len(prefix)==0{
return ""
}
prefix = prefix[:len(prefix)-1]
}
}
return prefix
}