#pragma mark 字符串反转
- (void)reverseString:(NSString *)inputString {
NSMutableString *tempString = [NSMutableString stringWithString:inputString];
for (int i = 0; i < (inputString.length + 1)/2.0; i++) {
[tempString replaceCharactersInRange:NSMakeRange(i, 1) withString:[inputString substringWithRange:NSMakeRange(inputString.length - i - 1, 1)]];
[tempString replaceCharactersInRange:NSMakeRange(inputString.length - i - 1, 1) withString:[inputString substringWithRange:NSMakeRange(i, 1)]];
}
NSLog(@"逆转字符串:%@", tempString);
}
#pragma mark 合并两个有序数组
- (void)combineTwoArray:(NSArray *)array1 array2:(NSArray *)array2 {
NSMutableArray *tempArray = [NSMutableArray array];
int p = 0;
int q = 0;
while (p < array1.count && q < array2.count) {
if ([array1[p] integerValue] <= [array2[q] integerValue]) {
[tempArray addObject:array1[p]];
p++;
} else {
[tempArray addObject:array2[q]];
q++;
}
}
while (p < array1.count) {
[tempArray addObject:array1[p++]];
}
while (q < array2.count) {
[tempArray addObject:array2[q++]];
}
NSLog(@"合并后的新数组:%@", tempArray);
}
#pragma mark iOS无重复字符的最长子串
- (void)calculateNORepeatLongString {
NSString *inputString = @"goodmorningdesk";
NSMutableSet *setArray = [NSMutableSet set];
NSInteger i = 0;
NSInteger j = 0;
NSInteger index = 0;
NSInteger length = 0;
while (i < inputString.length && j < inputString.length) {
NSString *subString = [inputString substringWithRange:NSMakeRange(j, 1)];
if (![setArray containsObject:subString]) {
[setArray addObject:subString];
j++;
if (j - i > length) {
length = j - i;
index = i;
}
} else {
NSString *subString = [inputString substringWithRange:NSMakeRange(i, 1)];
[setArray removeObject:subString];
i++;
}
}
NSString *targetString = [inputString substringWithRange:NSMakeRange(index, length)];
NSLog(@"目标字符串:%@", targetString);
}
#pragma mark 数组去重法(遍历数组去重、字典、集合)
- (void)removeRepeateObject {
NSMutableArray *tempArray = [NSMutableArray array];
NSArray *array = @[@"horse", @"cat", @"snake", @"dog", @"cat"];
//3 遍历数组去重
for (NSString *item in array) {
if (![tempArray containsObject:item]) {
[tempArray addObject:item];
}
}
NSLog(@"tempArray = %@",tempArray);
//2 字典获取无重复元素
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
for (NSString *item in array) {
[dictionary setObject:item forKey:item];
}
NSArray *tempArray1 = [dictionary allValues];
NSLog(@"tempArray1 = %@",tempArray1);
//1 集合获取无重复元素
NSSet *setArray = [NSSet setWithArray:array];
NSLog(@"setArray = %@",setArray);
}
#pragma mark 获取字符串中的数字 如何从字符串中得到一个整数?
- (void)getNumberFromString {
NSString *inputString = @"a0b0c1d2e3f4fda8fa8fad9fsad23";
NSCharacterSet *characterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
NSArray *tempArray = [inputString componentsSeparatedByCharactersInSet:characterSet];
NSString *targetString = [tempArray componentsJoinedByString:@""];
NSLog(@"最终数字字符串:%@", targetString);
}
#pragma mark 判断输入的是否是有效的IP地址
- (BOOL)isValidateIPAddress:(NSString *)ipString {
if (ipString == nil) {
NSLog(@"输入的字符串不能为空");
return NO;
}
NSArray *tempArray = [ipString componentsSeparatedByString:@"."];
if (tempArray.count == 4) {
for (NSString *string in tempArray) {
NSScanner *scanner = [NSScanner scannerWithString:string];
int value;
BOOL result = [scanner scanInt:&value] && [scanner isAtEnd];
if (result) {
//输入的是数字
int number = [string intValue];
if (!(number >= 0 && number <= 255)) {
NSLog(@"输入的字符串不是有效的IP地址");
return NO;
}
} else {
NSLog(@"输入的字符串不是有效的IP地址");
return NO;
}
}
NSLog(@"输入的字符串是有效的IP地址%@", ipString);
return YES;
}
return NO;
}
// MARK: 给定一个整型数组中有且仅有两个数之和等于目标值,这两个数在数组中的序号
func findTargerValueIndex(_ nums: [Int], _ target: Int) -> [Int] {
var dict = [Int: Int]()
for (i, object) in nums.enumerated() {
if let index = dict[target - object] {
return [index, i]
} else {
dict[object] = i
}
}
fatalError("No valid output")
}
- (void)findTargerValueIndex:(NSArray *)numberArray target:(NSInteger)target {
NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
[numberArray enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
NSInteger index = target - [obj integerValue];
NSString *string = [dictionary objectForKey:[NSString stringWithFormat:@"%ld",(long)index]];
if (string == nil) {
[dictionary setObject:[NSString stringWithFormat:@"%lu",(unsigned long)idx] forKey:obj];
} else {
NSLog(@"[inde, i] %ld %ld", [string integerValue], idx);
*stop = YES;
}
}];
}
网友评论