1、面試題
現在有一個數組arr1,它里面存儲的字符串分別為@“zhangsan”@“lisi”@“wangwu”@“lisi”@“zhangsan”,請將它去重后賦值給可變數組arr2輸出為:@“zhangsna”,@“lisi”,@“wangwu”。
解題思路:
1)創建一個可變字典
2)遍歷這個數組將數組的字符串存儲為這個字典的key和value
3)調用字典的一下任意一個方法
@property (readonly, copy) NSArray<KeyType> *allKeys;
@property (readonly, copy) NSArray<ObjectType> *allValues;
4)將獲得的字符串存儲在arr2中即可。
代碼如下:
1 NSArray *arr1 = @[@"zhangsan",@"lisi",@"wangwu",@"lisi",@"zhangsan"]; 2 3 NSMutableDictionary *dict = [NSMutableDictionary dictionary]; 4 for (NSString * str in arr1) { 5 [dict setObject:str forKey:str]; 6 } 7 8 NSMutableArray * arr2 = [NSMutableArray arrayWithObjects:[dict allKeys], nil]; 9 10 NSLog(@"%@",arr2);
輸出結果:
2016-03-21 18:07:32.058 01- nsarray[1829:263154] ( ( zhangsan, lisi, wangwu ) )
原理:這個是根據字典的特性:key值唯一,當碰到倆個zhangsan時,他不會在創建一個鍵值對而是給上一個zhangsan的鍵值對再重新賦值
eg:
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithObjects:@[@"zhangsan",@"lisi"] forKeys:@[@"1",@"1"]]; NSLog(@"%@",dict);
輸出結果:
2016-03-21 18:09:54.571 01- nsarray[1865:265560] { 1 = lisi; }