1-列出字符串中字符及出现次数

问题描述:

列出字符串中字符及其出现的次数

思路:

参照选择排序,使用双层嵌套for循环
分别取出外层循环的每个字符与内层循环的字符比较,记录相同的次数
使用字典将字符及对应的次数存储
如果只显示次数最多的字符及次数,可以只使用字典的一个元素,在外层循环中进行次数比较,并保存最多次数的字符及次数
#import <Foundation/Foundation.h>

void searchString_count(NSString *string);
void searchEachString_count(NSString *string);
int main(int argc, const char * argv[]) {
    @autoreleasepool {
        
        NSString *s = @"abc123abcaa";
        searchString_count(s);
        searchEachString_count(s);
    }
    return 0;
}

// 一、输出字符串中出现次数最多的字符及其次数
void searchString_count(NSString *string) {
    
    // 1.获取字符串长度
    int len = (int)string.length;

    // 2.创建字典
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    
    // 3.for循环取出每一个字符
    for (int i=0; i<len; i++) {
        
        // 4.计数器,存储字符出现的次数
        int count = 0;
        
        // 5.取出单个字符
        NSRange range = {i,1};
        NSString *s = [string substringWithRange:range];
        
        // 6.内层循环,比较字符,相同时,计数器+1
        for (int j=0; j<len; j++) {
            
            // 7.取出单个字符
            NSRange range = {j,1};
            NSString *c = [string substringWithRange:range];
            
            // 8.字符比较
            if ([s isEqualToString:c]) {
                count++;
            }
        }
        
        // 9.保存最大值的计数器及对应的字符到字典
        if (nil == dic) {
            [dic setValue:[NSString stringWithFormat:@"%d",count] forKey:s];
  }else if ((int)[dic valueForKey:s] < count) {
           // 移除元素,保证字典中只有最大值的元素 
            [dic removeAllObjects];
            [dic setValue:[NSString stringWithFormat:@"%d",count] forKey:s];
        }
        
    }
    
    NSLog(@"%@",dic);
    
}


// 二、获取每个字符出现的次数
void searchEachString_count(NSString *string) {

    // 1.获取字符串长度
    int len = (int)string.length;

    
    // 2.创建字典
    NSMutableDictionary *dic = [NSMutableDictionary dictionary];
    
    // 3.for循环取出每一个字符
    for (int i=0; i<len; i++) {
        
        // 4.计数器,存储字符出现的次数
        int count = 0;
        
        // 5.取出单个字符
        NSRange range = {i,1};
        NSString *s = [string substringWithRange:range];

        // 6.内层循环,比较字符,相同时,计数器+1
        for (int j=0; j<len; j++) {
            
            // 7.取出单个字符
            NSRange range = {j,1};
            NSString *c = [string substringWithRange:range];
            
            // 8.字符比较
            if ([s isEqualToString:c]) {
                count++;
            }
        }
        
        // 9.保存每一组字符及出现的次数
        [dic setValue:[NSString stringWithFormat:@"%d",count] forKey:s];
    }
    
    NSLog(@"%@",dic);
    
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,434评论 0 5
  • 1 Python 字符串的 CRUD 操作 1.1 创建字符串 字符串是 Python 中最常用的数据类型。我们可...
    藕丝空间阅读 822评论 0 1
  • 级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「字符串」作者: 沐灵洛审校: QiShare团队 字符串...
    QiShare阅读 4,196评论 0 11
  • 字符串字符串是一系列字符组成的。Swift字符串由String类型表示。1.使用字符串文字作为常量或变量的初始值:...
    沐灵洛阅读 804评论 0 5
  • 在c语言中,字符串是用字符数组来存储的(并不像c++或者java等语言中有单独的string类型), 存放时在字符...
    朱森阅读 1,586评论 0 2