美文网首页
数据结构

数据结构

作者: Jean_Lina | 来源:发表于2020-12-04 17:45 被阅读0次
#pragma mark 字符串反转
- (void)reverseString:(NSString *)inputString {
    NSMutableString *tempString = [NSMutableString stringWithString:inputString];
    for (int i = 0; i < (inputString.length + 1)/2.0; i++) {
        [tempString replaceCharactersInRange:NSMakeRange(i, 1) withString:[inputString substringWithRange:NSMakeRange(inputString.length - i - 1, 1)]];
        [tempString replaceCharactersInRange:NSMakeRange(inputString.length - i - 1, 1) withString:[inputString substringWithRange:NSMakeRange(i, 1)]];
    }
    NSLog(@"逆转字符串:%@", tempString);
}
#pragma mark 合并两个有序数组
- (void)combineTwoArray:(NSArray *)array1 array2:(NSArray *)array2 {
    NSMutableArray *tempArray = [NSMutableArray array];
    int p = 0;
    int q = 0;
    while (p < array1.count && q < array2.count) {
        if ([array1[p] integerValue] <= [array2[q] integerValue]) {
            [tempArray addObject:array1[p]];
            p++;
        } else {
            [tempArray addObject:array2[q]];
            q++;
        }
    }
    while (p < array1.count) {
        [tempArray addObject:array1[p++]];
    }
    while (q < array2.count) {
        [tempArray addObject:array2[q++]];
    }
    NSLog(@"合并后的新数组:%@", tempArray);
}
#pragma mark iOS无重复字符的最长子串
- (void)calculateNORepeatLongString {
    NSString *inputString = @"goodmorningdesk";
    NSMutableSet *setArray = [NSMutableSet set];
    NSInteger i = 0;
    NSInteger j = 0;
    NSInteger index = 0;
    NSInteger length = 0;
    while (i < inputString.length && j < inputString.length) {
        NSString *subString = [inputString substringWithRange:NSMakeRange(j, 1)];
        if (![setArray containsObject:subString]) {
            [setArray addObject:subString];
            j++;
            if (j - i > length) {
                length = j - i;
                index = i;
            }
        } else {
            NSString *subString = [inputString substringWithRange:NSMakeRange(i, 1)];
            [setArray removeObject:subString];
            i++;
        }
    }
    NSString *targetString = [inputString substringWithRange:NSMakeRange(index, length)];
    NSLog(@"目标字符串:%@", targetString);
}

#pragma mark 数组去重法(遍历数组去重、字典、集合)
- (void)removeRepeateObject {
    NSMutableArray *tempArray = [NSMutableArray array];
    NSArray *array = @[@"horse", @"cat", @"snake", @"dog", @"cat"];
    //3 遍历数组去重
    for (NSString *item in array) {
        if (![tempArray containsObject:item]) {
            [tempArray addObject:item];
        }
    }
    NSLog(@"tempArray = %@",tempArray);
    //2 字典获取无重复元素
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    for (NSString *item in array) {
        [dictionary setObject:item forKey:item];
    }
    NSArray *tempArray1 = [dictionary allValues];
    NSLog(@"tempArray1 = %@",tempArray1);
    //1 集合获取无重复元素
    NSSet *setArray = [NSSet setWithArray:array];
    NSLog(@"setArray = %@",setArray);
}

#pragma mark 获取字符串中的数字 如何从字符串中得到一个整数?
- (void)getNumberFromString {
    NSString *inputString = @"a0b0c1d2e3f4fda8fa8fad9fsad23";
    NSCharacterSet *characterSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];
    NSArray *tempArray = [inputString componentsSeparatedByCharactersInSet:characterSet];
    NSString *targetString = [tempArray componentsJoinedByString:@""];
    NSLog(@"最终数字字符串:%@", targetString);
}

#pragma mark 判断输入的是否是有效的IP地址
- (BOOL)isValidateIPAddress:(NSString *)ipString {
    if (ipString == nil) {
        NSLog(@"输入的字符串不能为空");
        return NO;
    }
    NSArray *tempArray = [ipString componentsSeparatedByString:@"."];
    if (tempArray.count == 4) {
        for (NSString *string in tempArray) {
            NSScanner *scanner = [NSScanner scannerWithString:string];
            int value;
            BOOL result = [scanner scanInt:&value] && [scanner isAtEnd];
            if (result) {
                //输入的是数字
                int number = [string intValue];
                if (!(number >= 0 && number <= 255)) {
                    NSLog(@"输入的字符串不是有效的IP地址");
                    return NO;
                }
            } else {
                NSLog(@"输入的字符串不是有效的IP地址");
                return NO;
            }
        }
        NSLog(@"输入的字符串是有效的IP地址%@", ipString);
        return YES;
    }
    return NO;
}

// MARK: 给定一个整型数组中有且仅有两个数之和等于目标值,这两个数在数组中的序号
    func findTargerValueIndex(_ nums: [Int], _ target: Int) -> [Int] {
        var dict = [Int: Int]()
        for (i, object) in nums.enumerated() {
            if let index = dict[target - object] {
                return [index, i]
            } else {
                dict[object] = i
            }
        }
        fatalError("No valid output")
    }

- (void)findTargerValueIndex:(NSArray *)numberArray target:(NSInteger)target {
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    [numberArray enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        NSInteger index = target - [obj integerValue];
        NSString *string = [dictionary objectForKey:[NSString stringWithFormat:@"%ld",(long)index]];
        if (string == nil) {
            [dictionary setObject:[NSString stringWithFormat:@"%lu",(unsigned long)idx] forKey:obj];
        } else {
            NSLog(@"[inde, i] %ld %ld", [string integerValue], idx);
            *stop = YES;
        }
    }];
}

相关文章

  • IOS开发_数据结构

    1、数据结构; 2、算法; 3、数据结构与算法; 1、数据结构; 1.1 概念: 数据结构:数据结构是计算...

  • py基础

    5Python集合容器 数据结构数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构...

  • 思维导图之数据结构+算法

    数据结构+算法 = 程序 数据结构比较 参考文章 数据结构与算法数据结构与算法(java)

  • 数据结构与算法分析:大纲]

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 本系列课程主要...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

  • 数据结构—概述

    数据结构概述 数据结构概述:程序设计 = 数据结构 + 算法数据结构:数据元素之间存在所有特定关系的集合,数据结构...

  • OVS 源码分析整理

    OVS 核心代码 OVS 架构 OVS 主要的数据结构数据结构关系图主要的数据结构和数据结构的参数数据结构代码 d...

  • 01. 数据结构与算法绪论

    一、数据结构 1. 什么是数据结构 2. 数据结构的分类 3. 常用的数据结构 4. 数据结构的应用表现 二、算法...

  • 数据结构与算法 - 查找

    数据结构与算法系列文章数据结构与算法 - 时间复杂度数据结构与算法 - 线性表数据结构与算法 - 树形结构数据结构...

  • C#之数据结构(上)

    数据结构 一般将数据结构分为两大类: 线性数据结构和非线性数据结构。 线性数据结构有: 线性表、栈、队列、串、数组...

网友评论

      本文标题:数据结构

      本文链接:https://www.haomeiwen.com/subject/lxuidktx.html