编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs.length==0)return "";//如果字符串为空则返回空
String ans=strs[0];//最长公共前缀ans为第一个字符串
for(int i=1;i<strs.length;i++){//对strs数组中的每个字符串遍历,与ans进行比较
int j=0;//为了后面遍历每个字符串方便
for(;j<strs[i].length()&&j<ans.length();j++){//对每个字符串进行遍历,但保证字符串长度不会大于ans的长度
if(ans.charAt(j)!=strs[i].charAt(j))//判断此时第i个字符串中的第j个字符是否与ans的第j个字符相同,不同则说明前缀和前面字符串前缀不同,即不是公共前缀
break;//如果不同则不需继续遍历,结束遍历第i个字符串
}//继续遍历其他字符串
ans=ans.substring(0,j);//将上面遍历得到的前j个和初始ans前j个相同的字符赋给ans
if(ans.equals(""))
return ans;//当循环发现ans为空时,返回空
}
return ans;
}
}
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
ans=""
for i in list(zip(*strs))://把它们的字母按顺序做成一个集合,i相当于他每个集合的数组i[0]=[F,F,F],i[1]={l,l,l},i[2]={o,o,i}
if len(set(i))==1://除去相同元素剩下的个数来判断他有几个字母相同,对于i[0]来说len(set(i))==1,里面元素相同,
ans+=i[0]//把这个相同元素给ans
else:
break
return ans
力扣中的习题,因为刚开始不会写,后来看其他大佬题解,加了一些自己的理解,前来做个笔记。
知识点:
1.java
ans.charAt(j)获取字符串ans 的位置为j的字符
如:"hello"
,charAt(0)
会返回字符串的第一个字符,即 "h"
。
ans.substring(0,j) 是Java中的字符串操作语句,用于获取字符串
ans
从索引0开始到索引j-1的子串。具体来说,substring(0, j)
方法将提取ans
字符串中从索引0开始(包括索引0)到索引j-1(不包括索引j)的子串。这意味着将返回一个新字符串,其中包含原始字符串中从第0个字符到第j-1个字符的所有字符。
例如,如果ans
是字符串"Hello World"
,那么ans.substring(0, 5)
将返回子串"Hello"
2.python
“list(zip(*strs))” 这段代码的含义是:将输入的字符串列表(strs)进行“解包”,然后用zip函数将解包后的字符串对应位置的元素打包成元组,最后用list函数将这些元组转换为列表。
*strs
这部分是解包操作。在Python中,使用*
操作符可以将列表或元组的元素“解包”出来,变成一个个单独的变量。如果strs
是一个字符串列表,例如['a', 'b', 'c']
,那么*strs
就相当于'a', 'b', 'c'
。zip(*strs)
这部分是打包操作。zip函数可以将多个可迭代的对象(如列表、元组等)中对应位置的元素打包成元组。所以zip(*strs)
会将'a', 'b', 'c'
打包成('a', 'b', 'c')
。
len(set(i)) 是一个Python表达式,其中
set(i)
创建一个包含i
中所有唯一元素的集合,然后len()
函数计算该集合的元素数量。
(1)set(i)
:这是一个将输入的可迭代对象(例如列表、元组等)转换为集合的操作。集合是一个无序且不包含重复元素的集合。例如,如果i
是一个列表[1, 2, 2, 3, 4, 4, 4]
,那么set(i)
将创建一个集合{1, 2, 3, 4}
。
(2)len()
:这是一个内置函数,用于返回可迭代对象的元素数量。例如,如果对象是一个列表或元组,那么len()
将返回列表或元组的长度。
所以,len(set(i))
将返回输入列表i
中的唯一元素数量。如果i
是[1, 2, 2, 3, 4, 4, 4]
,那么len(set(i))
将返回4,因为在这个列表中有4个不同的元素(1, 2, 3, 4)。