標籤:
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;}
iOS 基礎之NSArray數組去重