难易度:易
题目:编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
思路:
1:遍历整个数组查询字符串最短的那个
2:得到最短字符串的长度,按照此长度截取第一个字符串,依次遍历剩下的字符串,每个字符串都按照此长度截取,然后对比,如果不相同,马上跳出
3:将最短字符串的最后一位抛弃,重复步骤2
4:得到结果
-(NSString*)longestCommonPrefix:(NSArray*)stringArray
{
if (stringArray.count == 0)
{
return @"";
}
else if (stringArray.count == 1)
{
return stringArray[0];
}
NSString *minString = stringArray[0];
for (NSInteger i = 1; i < stringArray.count; i++)
{
NSString *temp = stringArray[i];
if (temp.length < minString.length)
{
minString = temp;
}
}
NSInteger minLen = minString.length;
minString = stringArray[0];
NSString *temp;
NSInteger common = 1;//用来记录是否所有的字符串都用相同的前缀
while (minLen > 0)
{
common = 1;//重置
minString = [minString substringWithRange:NSMakeRange(0, minLen)];
for (NSInteger i = 1; i < stringArray.count; i++)
{
temp = [stringArray[i] substringWithRange:NSMakeRange(0, minLen)];
if (![minString isEqualToString:temp])
{
break;
}
else
{
common++;
}
}
if (common == stringArray.count)//判断累计的次数是否和数组长度相同,如果相同就是为公共前缀
{
return minString;
}
minLen--;
}
return @"";
}