zoukankan      html  css  js  c++  java
  • oc将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接

    /*
     将字符串中单词按照出现次数(次数都不一样)降序排序,排序之后单词只出现一次,源字符串中单词用下划线连接,生成字符串也用下滑线连接(10分)
     如传入:@"good_good_study_good_study"
     返回:@"good_study"
     如传入:@"I_love_I_hate_love_love"
     返回:@"love_I_hate"
     */

    方法1:选择排序

    -(NSString *)sortStringByNumberOfWordsFromString:(NSString *)str
    {
        NSArray *ary=[str componentsSeparatedByString:@"_"];
        NSMutableArray *difary=[[NSMutableArray alloc]init];
        [difary addObject:ary[0]];
        for (int i=0; i<ary.count; i++) {
            BOOL ret=NO;
            for (int m=0; m<difary.count; m++)
            {
                BOOL ifret=[ary[i]isEqualToString:difary[m]];
                if (ifret==YES) {ret=YES;break;}
            }
            if (ret==NO) {[difary addObject:ary[i]];}
        }
        NSLog(@"%@",difary);
        int num=0;
        int nun=0;
        for (int m=0; m<difary.count; m++) {
            for (int k=m; k<difary.count; k++) {
                for (int n=0; n<ary.count; n++) {
                    if ([difary[m]isEqualToString:ary[n]]==YES) {
                        num++;
                    }
                    if ([difary[k]isEqualToString:ary[n]]==YES) {
                        nun++;
                    }
                }
                if(num>nun)
                {
                    NSString *temp=difary[m];
                    difary[m]=difary[k];
                    difary[k]=temp;
                }
                num=0;
                nun=0;
                NSLog(@"%@",difary);
            }
        }
        NSString *arystr=[difary componentsJoinedByString:@"_"];
        NSLog(@"%@",arystr);
        return  arystr;
    }

    方法2:字典

    - (NSString *)sortStringByNumberOfWordsFromStrings:(NSString *)str
    {
        NSMutableDictionary *dic=[[NSMutableDictionary alloc] init];
        NSArray *ary = [str componentsSeparatedByString:@"_"];
        NSMutableString *mystr = [[NSMutableString alloc] init];
        for (int i=0; i<ary.count; i++) {
            NSArray *ary1=[str componentsSeparatedByString:ary[i]];
            NSString *str1 = [ary1 componentsJoinedByString:nil];
            int k=(int)(str.length-str1.length)/[ary[i] length];
            NSString *set = [NSString stringWithFormat:@"%d",k];
            [dic setValue:ary[i] forKey:set];
           // NSLog(@"%@",str);
        }
     //   NSLog(@"%@",dic);
        for (int j = (int)ary.count; j>0; j--) {
           // NSLog(@"%@",[NSString stringWithFormat:@"%d",j]);
            NSString *string = [dic objectForKey:[NSString stringWithFormat:@"%d",j]];
          //  NSLog(@"%@",string);
            if (string!=nil) {
                [mystr appendString:@"_"];
                [mystr appendString:string];
            }
        }
        [mystr deleteCharactersInRange:NSMakeRange(0, 1)];
        NSLog(@"%@",mystr);
        return mystr;
    }

  • 相关阅读:
    关于APPIUM滑动手机屏幕的操作
    关于robotframework,app,appium的xpath定位问题及常用方法
    测试行业学习的知识体系
    APPIUM环境搭建及APP配合RF自动化的操作步骤
    关于RF在实践WEB UI自动化测试时,碰到的问题
    高并发
    [emerg] could not build server_names_hash, you should increase server_names_hash_bucket_size:32
    Nginx 反向代理与负载均衡详解
    Nginx 服务器安装及配置文件详解
    牛客网多校训练4 A Ternary String(高阶幂次取模)
  • 原文地址:https://www.cnblogs.com/rainwz/p/4587640.html
Copyright © 2011-2022 走看看