/**
*遍历字符串放入数组
*1.当前字符在数组中之前是否出现过
*2.出现过,删除之前一个字符包含它之前的
*3.添加当前字符到数组中
*4.最大值是否>当前无重复字符串数组的元素个数
*/
func lengthOfLongestSubstring(_ s: String) -> Int {
var charArr = Array<Character>()
var subString = String()
var maxLength = 0
for char in s{
if charArr.contains(char) {
let oldCharIndex = charArr.firstIndex(of: char)
charArr.removeFirst(oldCharIndex!+1)
}
charArr.append(char)
if charArr.count > maxLength {
maxLength = charArr.count
subString = ""
for char in charArr {
subString.append(char)
}
}
}
print(subString)
return maxLength
}
//调用
print(lengthOfLongestSubstring("pwwkew"))
//运行结果:wke
OC 实现
- (NSUInteger)lengthOfLongestSubstring:(NSString *)s{
//现将字符串拆成数组
NSMutableArray *charArr = [NSMutableArray array];
for (int i = 0; i<s.length; i++) {
NSString *tempStr = [s substringWithRange:NSMakeRange(i, 1)];
[charArr addObject:tempStr];
}
/**需要记录的变量
*1.过一遍的数组array
*2.最大长度
*3.最长的串
*/
NSMutableArray *array= [NSMutableArray array];
NSUInteger maxLength = 0;
NSString *maxLengthSubString = @"";
for (NSString *str in charArr) {
if ([array containsObject:str]) {
NSUInteger lastIndex = [array indexOfObject:str];
[array removeObjectsInRange:NSMakeRange(0, lastIndex+1)];
}
[array addObject:str];
if (array.count > maxLength) {
maxLength = array.count;
maxLengthSubString = [array componentsJoinedByString:@""];
}
}
NSLog(@"%@",maxLengthSubString);
return maxLength;
}