字符串
//<1>把字符串中每个字符转成字符串存在数组中
//id也可写成NSArray
id buf[string.length];
for (int i = 0; i < string.length; i++) {
buf[i] = [string substringWithRange:NSMakeRange(i, 1)];
}
//或者
NSMutableArray * buf=[[NSMutableArray alloc]init] ;
for (int i = 0; i < String.length; i++) {
[buf addObject:[String substringWithRange:NSMakeRange(i, 1)]];
}
//<2.0>字符串逆序(无分隔)
-(NSString *)reverseWordsInString:(NSString *)str
{
id buf[str.length];
for (int i = 0; i < str.length; i++) {
buf[i] = [str substringWithRange:NSMakeRange(i, 1)];
}
NSMutableString * mstr = [[NSMutableString alloc]init];
for (int i = (int)str.length-1; i >= 0; i--) {
[mstr appendString:buf[i]];
}
return mstr;
}
//<2.1>字符串逆序(self是个字符串,2.1 2.2这两个方法一开始是写在NSMutableString的分类里)
-(void) reverse
{
for (int i = 0; i < [self length] - 1; i++) {
NSRange range = {[self length]-1, 1};
[self insertString:[self substringWithRange:range] atIndex:i];
NSRange range1 = {[self length]-1, 1};
[self deleteCharactersInRange:range1];
}
}
//<2.2>字符串逆序(无分隔)
-(void) reverse1
{
NSMutableString * str = [[NSMutableString alloc]init];
for (int i = 0; i < [self length]; i++) {
unichar c = [self characterAtIndex:i];
[str insertString:[NSString stringWithFormat:@"%C", c] atIndex:0];
}
[self setString:str];
}
//<3.0>字符串中单词个数
int i = [[str componentsSeparatedByString:@" "] count];
//<3.1>字符串中某个单词的个数
NSInteger n = [str1 componentsSeparatedByString:[NSString stringWithFormat:@"%@_",array[i]]].count;//用所求单词取分割原字符串
//把原字符串按空格分割后的结果存在array中,i是循环控制变量
//单词后要加上分隔符,以防一个单词里面有另一个单词的情况(afternoon包含noon),原字符串最后如果没有分隔符的话也要添上一个,否则最后一个单词无法判断
数组
//<1.0>排序前
NSArray *arr = @[[NSNumber numberWithInt:10],[NSNumber numberWithInt:1],[NSNumber numberWithInt:3],[NSNumber numberWithInt:12],[NSNumber numberWithInt:22],[NSNumber numberWithInt:5],[NSNumber numberWithInt:33]];
NSMutableArray *oldArr = [[NSMutableArray alloc]initWithArray:arr];
NSLog(@"排序前:%@",oldArr);
//<1.1>冒泡排序
- (void)sort:(NSMutableArray *)arr
{
for (int i = 0; i < arr.count; i++) {
for (int j = 0; j < arr.count - i - 1;j++) {
if ([arr[j+1] integerValue] < [arr[j] integerValue]) {
int temp = [arr[j] integerValue];
arr[j] = arr[j + 1];
arr[j + 1] = [NSNumber numberWithInt:temp];
}
}
}
NSLog(@"冒泡排序后:%@",arr);
}
//<1.2>选择排序
- (void)sort:(NSMutableArray *)arr
{
for (int i = 0; i < arr.count; i ++) {
for (int j = i + 1; j < arr.count; j ++) {
if ([arr[i] integerValue] > [arr[j] integerValue]) {
int temp = [arr[i] integerValue];
arr[i] = arr[j];
arr[j] = [NSNumber numberWithInt:temp];
}
}
}
NSLog(@"选择排序后:%@",arr);
}
//<1.3>快速排序
- (void)quickSort:(NSMutableArray *)arr leftIndex:(int)left rightIndex:(int)right
{
if (left < right) {
int temp = [self getMiddleIndex:arr leftIndex:left rightIndex:right];
[self quickSort:arr leftIndex:left rightIndex:temp - 1];
[self quickSort:arr leftIndex:temp + 1 rightIndex:right];
}
}
- (int)getMiddleIndex:(NSMutableArray *)arr leftIndex:(int)left rightIndex:(int)right
{
int tempValue = [arr[left] integerValue];
while (left < right) {
while (left < right && tempValue <= [arr[right] integerValue]) {
right --;
}
if (left < right) {
arr[left] = arr[right];
}
while (left < right && [arr[left] integerValue] <= tempValue) {
left ++;
}
if (left < right) {
arr[right] = arr[left];
}
}
arr[left] = [NSNumber numberWithInt:tempValue];
return left;
}
//<1.4>插入排序
- (void)sort:(NSMutableArray *)arr
{
for (int i = 1; i < arr.count; i ++) {
int temp = [arr[i] integerValue];
for (int j = i - 1; j >= 0 && temp < [arr[j] integerValue]; j --) {
arr[j + 1] = arr[j];
arr[j] = [NSNumber numberWithInt:temp];
}
}
NSLog(@"插入排序后:%@",arr);
}
//<2>去重。(str是个由_分隔的字符串,array1中存储的是str中出现过的单词,无重复)
NSArray * array = [str componentsSeparatedByString:@"_"];
NSMutableArray * array1 = [[NSMutableArray alloc]init];
for (int i = 0; i < [array count]; i++) {
if (![array1 containsObject:array[i]]) {
[array1 addObject:array[i]];
}
}