1. 判断中间目录是否存在 (10分)

比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng"

返回:YES

传入字符串 @"/usr/qianfeng/oc.txt 和 @"fengqian"

返回:NO

2.将字符串按照单词逆序 (10分)

输入一段字符串,已知字符串只由字母和空格构成,将字符串按照单词逆序

传入@"welcome to qianfeng"

返回 @"qianfeng to welcome"

3.将C++的标识符转成OC的标识符(20分)

C++的标识符和OC一样由数字字母下划线组成,打头的不是数字。当标识符超过一个单词,

C++采用全字母小写,单词间用下划线连接的书写规范,如:

qian_feng

OC采用除第一个单词外,其余单词首字母大写的书写规范,如:

qianFeng

//传入C++标识符,返回OC标识符

4. 创建大量字典(10分)

传入两个数组,key和obj,数组元素个数未知。创建大量字典,字典的个数与key和obj中元素较少的一个数组的元素个数相同。key中第i个元素和obj中第i个元素组成键值对。所有字典添加到一个可变数组中,返回数组的地址。

5. 传入一段字符串,把相同的字符按出现顺序,归在一起,并压缩(20分)

比如:输入: SamSameCome

输出:  SSaammmeeCo

S2a2m3e2C1o1

返回值为压缩后的结果,比如S2a2m3e2C1o1

6 传入一段字符串,字符串中可能有任何字符,要求找出字符串中最长的单词,即最长的连续英语字母,返回该单词的字母个数(20分)

比如: 输入 Yes, I hate the guy who make this fucking examination paper!

返回:11 即examination的长度。

7.打印杨辉三角(10分)

输入 7

1

1 1

1 2  1

1 3  3  1

1 4  6  4  1

1 5 10 10  5 1

1 6 15 20 15 6 1

NSLog打印

8. 求一个字符串s的最大连续递减数字子串。(20)

比如:

输入 f12345fffwf3210abcd 输出为 3210

输入 abcd765bbw135797531f12345 输出为 765

//如果有多个相同的最大数字串那么返回最后一个

9.对指定的字符串(单词间用任意的非字母分隔)进行分析,返回它里边所有单词出现的次数,返回值字字典 用单词作为key, 出现次数作为值(20分)(注意不都以空格分隔,是任意的非字母字符)

10.剔除字符串中的全部空格(10分)

传入:@"welcome to        qianfeng"

返回:@"welcometoqianfeng"

11. 判断字符串str是否是合法的C变量(10分)

变量名只能由字母、数字、下划线_构成,并且以字母和下划线_开头。

实际上就是判断是否是一个合法的标识符 不考虑关键字情况

如:@"_ios" 是合法的变量名

@"1oc" 不合法

@"123" 不合法

@"xiaohuang_"  合法

@"_UI*" 不合法

@"#OC"  不合法

12.对称的数组(10分)

传入一个数组,其元素类型与个数皆未知,返回新数组,由原数组的元素正序反序拼接而成。

//参数arr 表示原数组地址

//返回值是新数组的地址

传入:@[@"one", @"Two", @"Three"]

返回:@[@"one", @"Two", @"Three", @"Three", @"Two", @"one"]

13.将字符串后移(10分)

将字符串向右移动指定位数,首尾循环

如:string传入@"welcometoqianfeng", bits传入4

返回:@"fengwelcometoqian"

14.找出出现最多的字母 (10分)

找出字符串中出现次数最多的字母,将该字母和字母出现的次数拼接成一个新字符串

返回新字符串。

传入:@"WelcomeToQianfeng"

返回:@"e3"

15.将字符中单词用空格隔开(20分)

已知传入的字符串中只有字母,每个单词的首字母大写,请将每个单词用空格隔开

只保留第一个单词的首字母大写

传入:@"HelloMyWorld"

返回:@"Hello my world"

/**************************************************************/

//.h声明文件方法定义

#import <Foundation/Foundation.h>

#define PATH @"/Users/paul/Desktop/English.rtf"

@interface Test : NSObject

+ (BOOL)isPath:(NSString *)path includeMiddleDirectory:(NSString *)dir;

+ (NSString *)reverseWordsInString:(NSString *)str;

+ (NSString *)objcIdentifierFromCppIdentifier:(NSString *)idf;

+ (NSArray *)createDictionariesWithKeys:(NSArray *)key andObjs:(NSArray *)obj;

+ (NSString *)compressString:(NSString *)s;

+ (NSUInteger)numbersOfLongestWordInString:(NSString *)s;

+(void)printYangHuiTriangle:(int) n;

+ (NSString *)subNumberString:(NSString *)string;

+(NSDictionary*)wordCount:(NSString*)fileContent;

+(NSString *)stringWithoutSpaceInString:(NSString *)string;

+ (BOOL) isCValidVar:(NSString *)str;

+ (NSArray *)symmetryArray:(NSArray *)arr;

+ (NSString *)displacemetString:(NSString *)string forBits:(NSUInteger)bits;

+ (NSString *)maxTimesCharacterOfString:(NSString *)string;

+ (NSString *)separateString:(NSString *)string;

/**************************************************************/

/*判断中间目录是否存在

比如 传入字符串 @"/home/qianfeng/oc.txt" 和 @"qianfeng"

返回:YES

传入字符串 @"/usr/qianfeng/oc.txt 和 @"fengqian"

返回:NO

+ (BOOL)isPath:(NSString *)path includeMiddleDirectory:(NSString *)dir;

*/

//测试代码

//        Test *t=[[Test alloc] init];

//        if([Test isPath:PATH includeMiddleDirectory:@"Users"])

//        {

//            NSLog(@"存在该目录");

//        }else

//        {

//            NSLog(@"不存在该目录");

//        }

//实现方法

+ (BOOL)isPath:(NSString *)path includeMiddleDirectory:(NSString *)dir

{

NSArray *pArray=[[NSArray alloc] initWithArray:[path componentsSeparatedByString:@"/"]];

BOOL re=[pArray containsObject:dir];

return re;

}

/**************************************************************/

/*

将字符串按照单词逆序

输入一段字符串,已知字符串只由字母和空格构成,将字符串按照单词逆序

传入@"welcome to qianfeng"

返回 @"qianfeng to welcome"

+ (NSString *)reverseWordsInString:(NSString *)str;

*/

//测试代码

//        NSString *s=[Test reverseWordsInString:@"welcome to qianfeng"];

//        NSLog(@"%@",s);

//实现方法

+ (NSString *)reverseWordsInString:(NSString *)str

{

NSArray *array=[[NSArray alloc] initWithArray:[str componentsSeparatedByString:@" "]];

NSMutableArray *s=[[NSMutableArray alloc] init];

for(int i=0;i<[array count];i++)

{

[s addObject:array[[array count]-1-i]];

}

NSString *s1=[s componentsJoinedByString:@" "];

return s1;

}

/**************************************************************/

/*

将C++的标识符转成OC的标识符

C++的标识符和OC一样由数字字母下划线组成,打头的不是数字。当标识符超过一个单词,

C++采用全字母小写,单词间用下划线连接的书写规范,如:

qian_feng

OC采用除第一个单词外,其余单词首字母大写的书写规范,如:

qianFeng

//传入C++标识符,返回OC标识符

+ (NSString *)objcIdentifierFromCppIdentifier:(NSString *)idf;

*/

//测试代码

//        NSString *s=[Test objcIdentifierFromCppIdentifier:@"qian_feng"];

//        NSLog(@"%@",s);

//方法实现

+ (NSString *)objcIdentifierFromCppIdentifier:(NSString *)idf

{

NSMutableArray *array=[[NSMutableArray alloc] initWithArray:[idf componentsSeparatedByString:@"_"]];

for (int i=1; i<[array count]; i++)

{

[array replaceObjectAtIndex:i withObject:[array[i] capitalizedString]];

}

NSString *s=[array componentsJoinedByString:@""];

return s;

}

/**************************************************************/

/*

创建大量字典

传入两个数组,key和obj,数组元素个数未知。创建大量字典,字典的个数与key和obj中元素较少的一个数组的元素个数相同。key中第i个元素和obj中第i个元素组成键值对。所有字典添加到一个可变数组中,返回数组的地址。

+ (NSArray *)createDictionariesWithKeys:(NSArray *)key andObjs:(NSArray *)obj;

*/

//测试代码

//        NSArray *s1=@[@"0",@"1",@"2",@"3",@"4",@"5"];

//        NSArray *s2=@[@"10",@"11",@"12",@"13",@"14",@"15"];

//        NSArray *s3 =[Test createDictionariesWithKeys:s1 andObjs:s2];

//        NSLog(@"%@",s3);

//实现方法

+ (NSArray *)createDictionariesWithKeys:(NSArray *)key andObjs:(NSArray *)obj

{

NSMutableArray *mulArray=[[NSMutableArray alloc] init];

NSInteger n1=[key count];

NSInteger n2=[obj count];

NSInteger n3=n1>n2?n1:n2;

for (int i=0; i<n3; i++)

{

NSMutableDictionary *dic=[[NSMutableDictionary alloc] initWithObjects:obj forKeys:key];

[mulArray addObject:dic];

}

NSArray *a=[[NSArray alloc] initWithArray:mulArray];

return a;

}

/**************************************************************/

/*

传入一段字符串,把相同的字符按出现顺序,归在一起,并压缩

比如:输入: SamSameCome

输出:  SSaammmeeCo

S2a2m3e2C1o1

返回值为压缩后的结果,比如S2a2m3e2C1o1

+ (NSString *)compressString:(NSString *)s;

*/

//测试代码

//        NSString *s=@"SamSameCome";

//        NSString *s1=[Test compressString:s];

//        NSLog(@"%@",s1);

//实现方法

+ (NSString *)compressString:(NSString *)s

{

NSMutableArray *sa=[[NSMutableArray alloc] init];

NSMutableArray *sa1=[[NSMutableArray alloc] init];

//将字符串存入可变数组

for(int i=0;i<[s length];i++)

{

NSString *s1=[[NSString alloc] initWithFormat:@"%c",[s characterAtIndex:i]];

[sa addObject:s1];

}

//初始化第一个元素

[sa1 addObject:[sa objectAtIndex:0]];

[sa removeObjectAtIndex:0];

//遍历sa,一旦遇到与sa1相同的则移除,再次遍历,知道sa移空

while([sa count]!=0)

{

for (int j=0; j<[sa count]; j++)

{

if([[sa1 objectAtIndex:([sa1 count]-1)]isEqualTo:[sa objectAtIndex:j]])

{

[sa1 addObject:[sa objectAtIndex:j]];

[sa removeObjectAtIndex:j];

j=0;

}

}

//遍历完一次把一种相同字母放到一起,接下来存入sa开头的元素

if([sa count] !=0)

{

[sa1 addObject:[sa objectAtIndex:0]];

[sa removeObjectAtIndex:0];

}

}

//相同字母移动到一起存入sa1

int count=1;

int flag=0;

NSMutableArray *arr=[[NSMutableArray alloc] init];

for (int i=0; i<[sa1 count]; i++)

{

//判断最后一个元素是否与前一个元素相同

if(i==([sa1 count]-1))

{

if([sa1 objectAtIndex:i]!=[sa1 objectAtIndex:i-1])

{

[arr addObject:[sa1 objectAtIndex:i]];

[arr addObject:@"1"];

}

}

else

{

[arr addObject:[sa1 objectAtIndex:i]];

}

//count记录每个字母出现的次数,换到下一个字母时初始化为1

//flag标记是否遇到不同的字母,或所有字母是否读完

count=1;

flag=0;

for (int j=i; j<[sa1 count]-1; j++)

{

//判断相同字母总共有几个

if([[sa1 objectAtIndex:i] isEqualTo:[sa1 objectAtIndex:j+1]])

{

count++;

if(j+1==([sa1 count]-1))

{

flag++;

}

}

else

{

flag++;

}

//如果flag遇到不同的字母,或所有字母是否读完,把字母个数存入sa1

if(flag)

{

NSString *scount=[[NSString alloc] initWithFormat:@"%d",count];

[arr addObject:scount];

//如果j等于数组长度少1表明已经读取完毕

if(j!=[sa1 count]-1)

{

i=j;

}

break;

}

}

}

NSString *ss=[arr componentsJoinedByString:@""];

return ss;

}

/**************************************************************/

/*

传入一段字符串,字符串中可能有任何字符,要求找出字符串中最长的单词,即最长的连续英语字母,返回该单词的字母个数

比如: 输入 Yes, I hate the guy who make this fucking examination paper!

返回:11 即examination的长度。

+ (NSUInteger)numbersOfLongestWordInString:(NSString *)s;

*/

//测试代码

//        char inputChar[1000]={"Yes, I hate the guy who make this fucking examination paper!"};

//        char *c=inputChar;

//        printf("请输入一段话\n");

//        scanf("%[^\n]",c);

//        printf("%s\n",inputChar);

//        NSString *s=[[NSString alloc] initWithFormat:@"%s",c];

//        NSInteger n= [Test numbersOfLongestWordInString:s];

//        NSLog(@"其中最长的单词长度是:%lu\n",n);

+ (NSUInteger)numbersOfLongestWordInString:(NSString *)s

{

NSArray *arr=[s componentsSeparatedByString:@" "];    //将字符串分割成数组

NSMutableArray *mArr=[[NSMutableArray alloc] initWithArray:arr];   //把分割后的数组放入可变数字以便操作

char countLetter[100]={};    //记录每个单词的长度

//遍历数组,获取每一个单词

for (int i=0; i<[mArr count]; i++)

{

int count=10;

NSMutableArray *mArrSingleLetter=[[NSMutableArray alloc] init];

//将每一个单词单独存入一个可变数组,对每个字符进行判断,来得到单词的长度

for(int j=0;j<[mArr[i] length];j++)

{

NSMutableArray *c=[[NSMutableArray alloc] init];

NSRange range={j,1};    //定位到单个字符

[c addObject:[mArr objectAtIndex:i]];

//判断条件

if((([[[c objectAtIndex:0] substringWithRange:range] isGreaterThanOrEqualTo:@"a"])&&!([[[c objectAtIndex:0] substringWithRange:range] isLessThanOrEqualTo:@"z"]))

||(([[[c objectAtIndex:0] substringWithRange:range] isGreaterThanOrEqualTo:@"A"])&&!([[[c objectAtIndex:0] substringWithRange:range] isLessThanOrEqualTo:@"Z"])))

{

count++;

[mArrSingleLetter addObject:[[c objectAtIndex:0] substringWithRange:range]];

}

}

countLetter[i] = count;

}

//遍历数组找出单词最大长度的下标

int index=0;

for (int k=1; k<strlen(countLetter); k++)

{

if(countLetter[index]<countLetter[k])

{

index=k;

}

}

//返回单词长度

return countLetter[index]-10;

}

/**************************************************************/

/*

打印杨辉三角

输入 7

1

1 1

1 2  1

1 3  3  1

1 4  6  4  1

1 5 10 10  5 1

1 6 15 20 15 6 1

NSLog打印

+(void)printYangHuiTriangle:(int) n;

*/

//测试代码

//         [Test printYangHuiTriangle:7];

//方法实现

+(void)printYangHuiTriangle:(int) n

{

printf("请输入n:\n");

scanf("%d",&n);

if(n>0&&n<100)

{

NSMutableString *s=[[NSMutableString alloc] init];

int trangle[100][100]={};

for(int i=0;i<n;i++)

{

for(int j=0;j<i;j++)

{

if(i==j||j==0)

{

trangle[i][j]=1;

}else

{

trangle[i][j]=trangle[i-1][j]+trangle[i-1][j-1];

}

[s appendFormat:@"%3d",trangle[i][j]];

}

[s appendFormat:@"\n"];

}

NSLog(@"%@",s);

//        for(int k=0;k<n;k++)

//        {

//            for(int j=0;j<=k;j++)

//            {

//                printf("%3d",trangle[k][j]);

//            }

//            printf("\n");

//        }

}else

{

printf("输入数字有误!");

}

}

/**************************************************************/

/*

求一个字符串s的最大连续递减数字子串。

比如:

输入 f12345fffwf3210abcd 输出为 3210

输入 abcd765bbw135797531f12345 输出为 765

//如果有多个相同的最大数字串那么返回最后一个

+ (NSString *)subNumberString:(NSString *)string;

*/

//测试代码

//        NSString *s=[Test subNumberString:@"abcd765bbw135797531f12345"];

//        NSLog(@"%@",s);

//方法实现

+ (NSString *)subNumberString:(NSString *)string

{

//将字符串存入可变数组

NSMutableArray *mArr=[[NSMutableArray alloc] init];

for(int i=0;i<[string length];i++)

{

NSRange range={i,1};

[mArr addObject:[string substringWithRange:range]];

}

int indexStart=0,indexEnd=0;  //分别记录递减数字字符串的首尾下标

NSMutableArray *dLength=[[NSMutableArray alloc] init];    //记录最长递减数字字符串的长度

NSMutableArray *dKey=[[NSMutableArray alloc] init];    //记录最长递减字符串的开始位置

for (int i=0; i<[mArr count]; i++)   //遍历整个数组

{

if([[mArr objectAtIndex:i] intValue])   //第i个是否是字母,字母和数字0会被转化为0

{

//是数字时进入该分支

indexStart=i;    //首位初始化

indexEnd=i;    //尾位初始化

//另一个循环遍历从第一个数字开始到结束,中间如果出现递减数字字符串断裂也会跳出该循环

for(int j=i+1;j<[mArr count];j++)

{

if(![[mArr objectAtIndex:j] intValue])    //第j个是否为字母

{

//是字母或数字0时进入该循环

if([[mArr objectAtIndex:j]isEqualToString:@"0"])    //第j是否为0

{

//是数字0时进入该循环

if([[mArr objectAtIndex:j-1] intValue]-[[mArr objectAtIndex:j] intValue]==1)

{

//如果0的前一个是1,说明0也在递减字符串里

indexEnd++;    //尾位后移

}

else

{

break;

}

}

else    //第j个为字母

{

i++;    //从字母的下一个开始判断

break;

}

}

else    //第j为数字的情况

{

//判断首尾下标所指是否为递减字符串

if([[mArr objectAtIndex:j-1] intValue]-[[mArr objectAtIndex:j] intValue]==1)

{

indexEnd++;    //尾位后移

}

else

{

break;    //递减字符串中断

}

}

}

//判断是否找到递减字符串

if(indexEnd-indexStart>0)

{

NSString *length=[[NSString alloc] initWithFormat:@"%d",(indexEnd-indexStart+1)];

[dLength addObject:length];    //将递减字符串长度存入数组

NSString *key=[[NSString alloc] initWithFormat:@"%d",indexStart];

[dKey addObject:key];    //将递减字符串的下标存入数组

}

else

{

i=indexEnd;    //从中断点开始继续查找

}

}

}

//将所有递减字符串的起始位置和长度作为键值对存入可变字典

NSMutableDictionary *countIndexWithLength=[[NSMutableDictionary alloc] initWithObjects:dLength forKeys:dKey ];

NSArray *getAllKeys=[countIndexWithLength allKeys];    //取出所有键

int maxLength=0;    //记录最大长度

int start=0;    //记录最大长度值的字符串的开始位置

for(int i=0;i<[getAllKeys count];i++)

{

if(maxLength<=[[countIndexWithLength objectForKey:[getAllKeys objectAtIndex:i]] intValue])

{

maxLength=[[countIndexWithLength objectForKey:[getAllKeys objectAtIndex:i]] intValue];

start=[[getAllKeys objectAtIndex:i] intValue];

}

}

NSRange range={start,maxLength};    //定义范围用于取出范围内子串

NSMutableString *rst=[[NSMutableString alloc] initWithFormat:@"%@",[string substringWithRange:range]];

return rst;

}

/**************************************************************/

/*

对指定的字符串(单词间用任意的非字母分隔)进行分析,返回它里边所有单词出现的次数,返回值字字典 用单词作为key, 出现次数作为值(注意不都以空格分隔,是任意的非字母字符)

+(NSDictionary*)wordCount:(NSString*)fileContent;

*/

//测试代码

//        NSString *fileWord=[[NSString alloc] initWithContentsOfFile:PATH encoding:NSUTF8StringEncoding error:nil];

//        NSMutableString *inputString=[[NSMutableString alloc] initWithString:fileWord];

//        NSMutableDictionary *mDic=[[NSMutableDictionary alloc]initWithDictionary:[Test wordCount:inputString]];

//        //NSLog(@"%@",inputString);

//        NSLog(@"%@",mDic);

//方法实现

+(NSDictionary*)wordCount:(NSString*)fileContent

{

NSMutableArray *dLength=[[NSMutableArray alloc] init];

NSMutableArray *dKey=[[NSMutableArray alloc] init];    //存放所有不重复的单词

NSMutableArray *mArr=[[NSMutableArray alloc] init];    //存放相应单词重复的次数

int countAllLetter=0;

int startIndex=0,endIndex=0;

//将字符串分割存入可变数组mArr中

for(int i=0;i<[fileContent length]-1;i++)

{

startIndex=endIndex;

for(int j=startIndex;j<[fileContent length];j++)

{

NSRange range={j,1};

if((([[fileContent substringWithRange:range] isGreaterThanOrEqualTo:@"a"])&&([[fileContent substringWithRange:range] isLessThanOrEqualTo:@"z"]))

||(([[fileContent substringWithRange:range] isGreaterThanOrEqualTo:@"A"])&&([[fileContent substringWithRange:range] isLessThanOrEqualTo:@"Z"])))

{

endIndex++;

continue;

}

else

{

break;

}

}

NSRange range1={startIndex,endIndex-startIndex};

if(startIndex!=endIndex)    //判断结束,首下标和尾下标指向同一处

{

[mArr addObject:[fileContent substringWithRange:range1]];

}

endIndex++;

}

//遍历所有单词

for(int i=0;i<[mArr count];i++)

{

countAllLetter=1;

NSString *everyLetter=[[NSString alloc] initWithFormat:@"%@",[mArr objectAtIndex:i]];

//从某个单词开始,往后遍历寻找相同的单词

for(int j=i+1;j<[mArr count];j++)

{

if([everyLetter isEqualToString:[mArr objectAtIndex:j]])

{

countAllLetter++;

}

}

//判断某个单词是否已经数过个数

int flag=0;

for(int i=0;i<[dKey count];i++)

{

if(everyLetter == [dKey objectAtIndex:i])

{

flag++;

break;

}

}

//如果存过某个单词,则不再存储

if(!flag)

{

NSString *count=[[NSString alloc] initWithFormat:@"%d",countAllLetter];

[dLength addObject:count];

[dKey addObject:everyLetter];

}

}

//添加进字典

NSMutableDictionary *mDic=[[NSMutableDictionary alloc] initWithObjects:dLength forKeys:dKey];

return mDic;

}

/**************************************************************/

/*

剔除字符串中的全部空格

传入:@"welcome to        qianfeng"

返回:@"welcometoqianfeng"

+(NSString *)stringWithoutSpaceInString:(NSString *)string;

*/

//测试代码

//        NSString *s=[[NSString alloc] initWithFormat:@"%@",[Test stringWithoutSpaceInString:@"welcome to        qianfeng"]];

//        NSLog(@"%@",s);

//方法实现

+(NSString *)stringWithoutSpaceInString:(NSString *)string

{

NSMutableString *mStr=[[NSMutableString alloc] init];

for(int i=0;i<[string length];i++)

{

NSRange range={i,1};

if(![[string substringWithRange:range] isEqualTo:@" "])

{

[mStr appendFormat:@"%@",[string substringWithRange:range]];

}

}

NSString *s=[[NSString alloc] initWithString:mStr];

return s;

}

/**************************************************************/

/*

判断字符串str是否是合法的C变量

变量名只能由字母、数字、下划线_构成,并且以字母和下划线_开头。

实际上就是判断是否是一个合法的标识符 不考虑关键字情况

如:@"_ios" 是合法的变量名

@"1oc" 不合法

@"123" 不合法

@"xiaohuang_"  合法

@"_UI*" 不合法

@"#OC"  不合法

+ (BOOL) isCValidVar:(NSString *)str;

*/

//测试代码

//        BOOL b=[Test isCValidVar:@"#OC"];

//        if(b)

//        {

//            NSLog(@"命名合法");

//        }else

//        {

//            NSLog(@"命名不合法");

//        }

//方法实现

+ (BOOL) isCValidVar:(NSString *)str

{

NSString *str1=[[NSString alloc] initWithFormat:@"abcdrfghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_"];

NSString *str2=[[NSString alloc] initWithFormat:@"1234567890"];

NSMutableArray *mArr=[[NSMutableArray alloc] init];

for (int i=0; i<[str length]; i++)

{

NSRange range={i,1};

[mArr addObject:[str substringWithRange:range]];

}

NSMutableArray *mArr1=[[NSMutableArray alloc] init];

for (int i=0; i<[str1 length]; i++)

{

NSRange range={i,1};

[mArr1 addObject:[str1 substringWithRange:range]];

}

NSMutableArray *mArr2=[[NSMutableArray alloc] init];

for (int i=0; i<[str2 length]; i++)

{

NSRange range={i,1};

[mArr2 addObject:[str2 substringWithRange:range]];

}

for(int i=0;i<[mArr count];i++)

{

int flag=0;

for (int j=0; j<[mArr1 count]; j++)

{

if([[mArr objectAtIndex:i] isEqual:[mArr1 objectAtIndex:j]])

{

flag=1;

break;

}

}

if(flag==0)

{

return 0;

}

if(i==0)

{

int flag=0;

for(int k=0; k<[mArr2 count]; k++)

{

if([[mArr objectAtIndex:i] isEqual:[mArr2 objectAtIndex:k]])

{

flag=1;

break;

}

}

if(flag)

{

return 0;

}

}

}

return 1;

}

/**************************************************************/

/*

对称的数组

传入一个数组,其元素类型与个数皆未知,返回新数组,由原数组的元素正序反序拼接而成。

//参数arr 表示原数组地址

//返回值是新数组的地址

传入:@[@"one", @"Two", @"Three"]

返回:@[@"one", @"Two", @"Three", @"Three", @"Two", @"one"]

+ (NSArray *)symmetryArray:(NSArray *)arr;

*/

//测试代码

//        NSArray *arr=@[@"One",@"Two",@"Three"];

//        NSMutableArray *mArr=[[NSMutableArray alloc] init];

//        [mArr setArray:[Test symmetryArray:arr]];

//        NSLog(@"%@",mArr);

//方法实现

+ (NSArray *)symmetryArray:(NSArray *)arr

{

NSMutableArray *mArr=[[NSMutableArray alloc]initWithArray:arr];

unsigned long len=[arr count]-1;

for (int i=(int)len; i>=0; i--)

{

[mArr addObject:[arr objectAtIndex:i]];

}

NSArray *arr1=[[NSArray alloc] initWithArray:mArr];

return arr1;

}

/**************************************************************/

/*

将字符串后移

将字符串向右移动指定位数,首尾循环

如:string传入@"welcometoqianfeng", bits传入4

返回:@"fengwelcometoqian"

+ (NSString *)displacemetString:(NSString *)string forBits:(NSUInteger)bits;

*/

//测试代码

//        NSString *s=[[NSString alloc] initWithFormat:@"%@",[Test displacemetString:@"welcometoqianfeng" forBits:4]];

//        NSLog(@"%@",s);

//方法实现

+ (NSString *)displacemetString:(NSString *)string forBits:(NSUInteger)bits

{

unsigned long n=bits%[string length];

NSMutableArray *mArr=[[NSMutableArray alloc] init];

for(unsigned long i=[string length]-n; i<[string length]; i++)

{

NSRange range={i,1};

[mArr addObject:[string substringWithRange:range]];

}

for (unsigned long i=0; i<[string length]-n; i++)

{

NSRange range={i,1};

[mArr addObject:[string substringWithRange:range]];

}

NSString *s=[mArr componentsJoinedByString:@""];

return s;

}

/**************************************************************/

/*

找出出现最多的字母

找出字符串中出现次数最多的字母,将该字母和字母出现的次数拼接成一个新字符串

返回新字符串。

传入:@"WelcomeToQianfeng"

返回:@"e3"

+ (NSString *)maxTimesCharacterOfString:(NSString *)string;

*/

//测试代码

//        NSString *s=[[NSString alloc] initWithFormat:@"%@",[Test maxTimesCharacterOfString:@"WelcomeToqianfeng"]];

//        NSLog(@"%@",s);

//方法实现

+ (NSString *)maxTimesCharacterOfString:(NSString *)string

{

NSMutableArray *dLength=[[NSMutableArray alloc] init];

NSMutableArray *dKey=[[NSMutableArray alloc] init];    //存放所有不重复的单词

NSMutableArray *mArr=[[NSMutableArray alloc] init];    //存放相应单词重复的次数

int countAllLetter=0;

//将字符串分割存入可变数组mArr中

for(int i=0;i<[string length];i++)

{

NSRange range={i,1};

[mArr addObject:[string substringWithRange:range]];

}

//遍历所有单词

for(int i=0;i<[mArr count];i++)

{

countAllLetter=1;

NSString *everyLetter=[[NSString alloc] initWithFormat:@"%@",[mArr objectAtIndex:i]];

//从某个字母开始,往后遍历寻找相同的字母

for(int j=i+1;j<[mArr count];j++)

{

if([everyLetter isEqualToString:[mArr objectAtIndex:j]])

{

countAllLetter++;

}

}

//判断某个单词是否已经数过个数

int flag=0;

for(int i=0;i<[dKey count];i++)

{

if(everyLetter == [dKey objectAtIndex:i])

{

flag++;

break;

}

}

//如果存过某个单词,则不再存储

if(!flag)

{

NSString *count=[[NSString alloc] initWithFormat:@"%d",countAllLetter];

[dLength addObject:count];

[dKey addObject:everyLetter];

}

}

//添加进字典

NSMutableDictionary *mDic=[[NSMutableDictionary alloc] initWithObjects:dLength forKeys:dKey];

int maxCount=0,index=0;

NSArray *arrValue=[mDic allValues];

NSArray *arrkey=[mDic allKeys];

for(int i=0;i<[arrValue count]; i++)

{

if(maxCount< [[arrValue objectAtIndex:i] intValue])

{

maxCount =[[arrValue objectAtIndex:i] intValue];

index=i;

}

}

NSMutableString *s=[[NSMutableString alloc]initWithFormat:@"%@%d",[arrkey objectAtIndex:index],maxCount];

return s;

}

/**************************************************************/

/*

将字符中单词用空格隔开

已知传入的字符串中只有字母,每个单词的首字母大写,请将每个单词用空格隔开

只保留第一个单词的首字母大写

传入:@"HelloMyWorld"

返回:@"Hello my world"

+ (NSString *)separateString:(NSString *)string;

+ (void)test;

*/

//测试代码

//        NSString *s=[[NSString alloc]initWithFormat:@"%@",[Test separateString:@"HelloMyWorld"]];

//        NSLog(@"%@",s);

//方法实现

+ (NSString *)separateString:(NSString *)string

{

//定义可变数组接收所有字符

NSMutableArray *mArr=[[NSMutableArray alloc] init];

//遍历字符串

for(int i=0;i<[string length];i++)

{

NSRange range={i,1};

NSString *s=[[NSString alloc]initWithFormat:@"%@",[string substringWithRange:range]];

//如果是大写字母并且是第一个的话,直接存储,非第一个就要先添加空格再把大写转小写存入

if([s isGreaterThanOrEqualTo:@"A"]&&[s isLessThanOrEqualTo:@"Z"])

{

if(i==0)

{

[mArr addObject:s];

}else

{

[mArr addObject:@" "];

[mArr addObject:[s lowercaseString]];

}

}

//如果是小写字母则直接存入,非字母字符不会读入

else if([s isGreaterThanOrEqualTo:@"a"]&&[s isLessThanOrEqualTo:@"z"])

{

[mArr addObject:s];

}

}

NSString *rst=[mArr componentsJoinedByString:@""];

return rst;

}

oc字符串+数组+字典操作题目的更多相关文章

  1. IOS NS 字符串 数组 字典 文件 动态 静态 操作

    ios 常用字符串的操作   //将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response e ...

  2. Swift学习—字符串&数组&字典

    字符串 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"",Swift中字符串"" ...

  3. Swift(一,创建对象,类型推导,基本运算,逻辑,字符串,数组,字典)

    swift用起来刚开始感觉有点怪怪的,但用了一段时间觉得还是挺好用的,哈哈.毕竟都是要有一个过程的嘛. 我就写一些自己在使用swift的时候的注意点吧,如有不正之处,还请指正! 一.在开发中优先使用常 ...

  4. OC基础:数组.字典.集 分类: ios学习 OC 2015-06-18 18:58 47人阅读 评论(0) 收藏

    ==============NSArray(不可变数组)=========== NSArray,继承自NSObject  用来管理(储存)一些有序的对象,不可变数组. 创建一个空数组 NSArray ...

  5. iOS 数组字典操作

    iOS开发中需要大量对dictionary和array进行操作,因此我们需要一种更加安全可靠的操作方法来避免不必要的crash.当然可以通过自定义dictionary 和array重载增删改查的方法来 ...

  6. OC ---- 字符串 数组 iOS学习-----细碎知识点总结

    NSString *urlString = [NSString stringWithFormat:@"http://www.apple.com"];        // 获取字符串 ...

  7. Object-C 语法 字符串 数组 字典 和常用函数 学习笔记

    字符串 //取子字符串 NSString *str1=@"今天的猪肉真贵,200块一斤"; NSString *sub1=[str1 substringFromIndex:4]; ...

  8. C++下面关于字符串数组的一些操作

    今天在写一个搜索引擎的分词系统,是很简单的那种,但是居然费了我一天的时间还没完成,晚上估计还得弄一会了,但是在这个过程中,遇到了集中关于字符串数组的操作,值得和大家分享一下. 首先是关于统计字符串数组 ...

  9. OC: 数组、集合、字典

    数组.字典.集合 参考1   参考2  参考3  参考4  参考5 NSArray * nn  = @[@"元素1",@"元素2",@"元素3&quo ...

随机推荐

  1. 学习spring in action 第一天

    这段时间,开始学习java吧,因为C sharp 学习了java的大量语法格式,所以,留意下,就不会错了,java 有的c sharp也有,而且之前我也学习过java的桌面开发,但是一下子上来就要自己 ...

  2. “Missing artifact....."的解决办法

    在使用Maven开发时,总会碰到一些问题,例如"Missing artifact org.apache.commons:commons-csv:jar:1.0-SNAPSHOT", ...

  3. 修改Nginx与Apache上传文件大小限制

    一.修改Nginx上传文件大小限制 我们使用ngnix做web server的时候,nginx对上传文件的大小有限制. 当超过大小的时候会报413错误. 这个时候我们要修改nginx参数. sudo ...

  4. CSS权威指南(第3版)

    第一章 基础介绍 介绍了css的好处, 编辑一个文件多处使用, 层叠: 指式样有矛盾时, 可以覆盖掉之前的式样, 便于维护 等等. 块级元素:会生成一个元素框, (默认地)它会填充其父元素的内容区, ...

  5. Hibernate通过many-to-one元素的一对一映射

    在hibernate中我们可以通过两种方式来执行一对一映射: 通过many-to-one元素标签 通过one-to-one元素标签 在这里,我们将通过多对一的many-to-one元素进行一对一的映射 ...

  6. java中Statement详细用法。

    1.创建 Statement 对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句.Statement 对象用 Connection 的方法createStatement 创建,如下列代 ...

  7. 通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML。

    通过可编程的对象模型,JavaScript 获得了足够的能力来创建动态的 HTML. JavaScript 能够改变页面中的所有 HTML 元素 JavaScript 能够改变页面中的所有 HTML ...

  8. [ JS 进阶 ] 基本类型 引用类型 简单赋值 对象引用 (转)

    ECMAScirpt 变量有两种不同的数据类型:基本类型,引用类型.也有其他的叫法,比如原始类型和对象类型,拥有方法的类型和不能拥有方法的类型,还可以分为可变类型和不可变类型,其实这些叫法都是依据这两 ...

  9. Error:“const char*”类型的实参与“wchar_t”类型的形参不兼容

    MainApp\RPolarView.cpp(1571): error C2664: “ATL::CStringT<BaseType,StringTraits>::ReverseFind” ...

  10. 看懂Gradle脚本(4)- Groovy语法之运算符重载

    继续讨论Task定义 回想一下前一篇文章的样例: task myTask { doLast { println 'hello world!' } } 这段脚本定义了一个名为myTask的任务.而且通过 ...