企业网站名称怎么写,1建设网站的重要性,广西关键词优化公司,wordpress ajax 接口14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀#xff0c;返回空字符串 “”。 方法一 竖向扫描法
个人感觉纵向扫描方式比较直观#xff0c;符合人类理解方式#xff0c;从前往后遍历所有字符串的每一列#xff0c;比较相同列上的…14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀返回空字符串 “”。 方法一 竖向扫描法
个人感觉纵向扫描方式比较直观符合人类理解方式从前往后遍历所有字符串的每一列比较相同列上的字符是否相同如果相同则继续对下一列进行比较如果不相同则当前列不再属于公共前缀当前列之前的部分为最长公共前缀。
Swift
func longestCommonPrefix(_ strs: [String]) - String {guard let firstStr strs.first, !firstStr.isEmpty else { return }for i in 0..firstStr.count {for j in 1..strs.count {if strs[j].count i || strs[j][strs[j].index(strs[j].startIndex, offsetBy: i)] ! firstStr[firstStr.index(firstStr.startIndex, offsetBy: i)] {return String(firstStr.prefix(i))}}}return firstStr}OC
-(NSString *)longestCommonPrefix:(NSArray NSString **)strs {if (strs.count 0) {return ;}NSString *firstStr strs.firstObject;NSInteger len firstStr.length;for (NSInteger i0; ilen; i) {for (NSInteger j1; jstrs.count; j) {if (strs[j].length i || [strs[j] characterAtIndex:i] ! [firstStr characterAtIndex:i]) {return [firstStr substringToIndex:i];}}}return firstStr;
}方法二 有序首尾比较法
有序首尾比较法先对数组进行排序巧妙利用排序后的顺序及值之间的关系只比较首尾两个字符串即可。
Swift
func longestCommonPrefix(_ strs: [String]) - String {let strs strs.sorted()let start strs.first!let end strs.last!var res for i in 0..start.count {let s start[start.index(start.startIndex, offsetBy: i)]if s end[end.index(end.startIndex, offsetBy: i)]{res.append(s)}else {break}}return res}OC
//有序首尾比较法
-(NSString *)longestCommonPrefix:(NSArray *)strs {NSArray *sortedStrs [strs sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, id _Nonnull obj2) {return [obj1 compare:obj2 options:NSCaseInsensitiveSearch];}];NSString *res ;NSString *firstStr sortedStrs.firstObject;NSString *lastStr sortedStrs.lastObject;for (NSInteger i0; ifirstStr.length; i) {if ([firstStr characterAtIndex:i] [lastStr characterAtIndex:i]) {unichar c [firstStr characterAtIndex:i];res [res stringByAppendingString:[NSString stringWithCharacters:c length:1]];}else {break;}}return res;
}