美文网首页
swift重点语法和算法相关的

swift重点语法和算法相关的

作者: wg689 | 来源:发表于2022-07-01 17:04 被阅读0次

    字符串的操作

    “let greeting = "Hello, world!"
    let index = greeting.firstIndex(of: ",") ?? greeting.endIndex
    let beginning = greeting[..<index]
    // beginning 的值为 "Hello"
    
    // 把结果转化为 String 以便长期存储。
    let newString = String(beginning)”
    

    字符串截取:

       let index1:String.Index = stre.index(before: stre.endIndex)
            let index2:String.Index = stre.index(stre.endIndex, offsetBy: -2)
            let str22 =  stre[index2...index1]
    

    获取某个字符:
    var afterChar = indexStr[indexStr.index(after: startIndex)] // e

    字符串的常用方法
    https://blog.csdn.net/java_android_man/article/details/121070460

    range的范围 startIndex...indexStr.index(startIndex, offsetBy: 13)

    数组

    定义二维数组
    matrix:[[Int]],
    matrix[row][column]

        var visited = Array(repeating: Array(repeating: false, count: matrix[0].count), count: matrix.count)
    
            matrix[row][col] == path[path.index(path.startIndex, offsetBy: pathIndex)] && !visited[row][col]) {
    

    **数组的常用方法 **
    创建var array4 = Array(repeating: "swift", count: 3) // ["swift", "swift", "swift"]
    创建

    var array1: [Int] = [] // []
    var arrya2: Array<Int> = [1, 2, 3] // [1, 2, 3]
    var arryaInt = [1, 2, 3] // [1, 2, 3]
    

    数组相加 +
    数组为空isEmpty
    数组截取 var subArray = array[1...2] // [2, 3]
    数组的元素:

    // 获取第一个元素
    var firstEle = array.first // 1
    
    // 获取最后一个元素
    var lastEle = array.last // 8
    

    常用方法

    // 当数组声明为可变时,才能使用增,删,改等方法,常量数组不能进行修改相关操作
    var array = [1, 2, 3, 4, 5, 6, 7, 8]
    print(array.count) // 8
    
    // 判断数组是空数组
    if array.isEmpty {
        print("array is empty")
    } else {
        print("array is not empty")
    }
    
    // 通过下标访问元素
    var ele = array[1] // 2
    
    // 截取新数组
    var subArray = array[1...2] // [2, 3]
    
    // 获取第一个元素
    var firstEle = array.first // 1
    
    // 获取最后一个元素
    var lastEle = array.last // 8
    
    // 修改下标对应的元素
    array[1] = 22
    array // [1, 22, 3, 4, 5, 6, 7, 8]
    
    // 修改指定范围的元素
    array[0...2] = [1, 2, 3] // [1, 2, 3]
     
    // 追加单个元素
    array.append(9) // [1, 2, 3, 4, 5, 6, 7, 8, 9]
    
    // 追加一组元素
    array.append(contentsOf: [10, 11, 12]) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    
    // 在指定位置插入单个元素
    array.insert(0, at: 0) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    
    // 在指定位置插入一组元素
    array.insert(contentsOf: [-3, -2, -1], at: 0) // [-3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    
    // 移除指定元素
    array.remove(at: 1) // -2
    
    // 移除一组元素
    array.removeSubrange(0...2) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
    
    // 移除首个元素
    array.removeFirst() // 1
    
    // 移除末尾元素
    array.removeLast() // 12
    
    // 移除前几个元素
    array.removeFirst(3) // [5, 6, 7, 8, 9, 10, 11]
    
    // 移除后几个元素
    array.removeLast(3) // [5, 6, 7, 8]
    
    // 替换指定范围的元素
    array.replaceSubrange(0...3, with: [1, 2, 3, 4]) // [1, 2, 3, 4]
    
    // 判断包含指定元素
    if array.contains(3) {
        print("array contains 3")
    }
    
    // 移除所有元素
    array.removeAll() // []
    
    var sortArr = [2, 1, 3, -1]
    
    // 从小到大排序
    sortArr.sorted(by: <) // [-1, 1, 2, 3]
    
    // 从大到小排序
    sortArr.sorted(by: >) // [3, 2, 1, -1]
    
    // 获取数组最大值
    sortArr.min() // -1
    
    // 获取数组最小值
    sortArr.max() // 3
    
    
    

    数组的遍历

    let arr = [11, 22, 33]
    
    for item in arr {
        print(item)
    }
    
    // 打印数组的下标及对应元素
    for item in arr.enumerated() {
        print(item) // (offset: 0, element: 11) (offset: 1, element: 22) (offset: 2, element: 33)
    }
    
    // 下标遍历
    for index in arr.indices {
        print(arr[index])
    }
    
    

    https://blog.csdn.net/java_android_man/article/details/121133090

    字典

    var dic1=[1:1,2:12,3:32,4:16,5:15]
    var dic2:Dictionary<String,String>=[:]
    var dic3=Dictionary<String,String>()
    var dic4=[String : String]()
    
    //1 读取字典元素
    var test1Dic=["key1":"你好","key2":"Swift","key3":"正在学习","key4":"字典","key5":"取值",]
     
    var test1Str=test1Dic["key2"]
    println("\(test1Str)")
     
    //此处取字典中未定义的键 不会报错,取出来的值为nil
    var test1Str2=test1Dic["key"]
    println("\(test1Str2)")
     
     
     
    //2 获取字典元素的个数
     
    println(test1Dic.count)
     
    //3 增加字典的元素
     
    test1Dic["key"]="test"
    println(test1Dic)
     
    //4 删除字典中的元素
     
    test1Dic.removeValueForKey("key1")
    println(test1Dic)
     
    //5 修改字典中的元素
     
    // 5.1 直接修改
    test1Dic["key"]="testkey"
     
    // 5.2 使用 updateValue
    var oldStr=test1Dic.updateValue("testkeytest", forKey: "key")
    println(oldStr)
    println(test1Dic)
     
    //6 遍历
    //6.1遍历所有的键值对
     
    for (key,value) in test1Dic{
        println("key:\(key) value:\(value)")
    }
     
    //6.2 遍历所有的键
    for test6Str in test1Dic.keys{
        println(test6Str)
    }
     
    //6.2 遍历所有的值
    for test6Str2 in test1Dic.values{
        println(test6Str2)
    }
     
    //7 字典转数组
    //7.1 将所有的键转为数组
    var test7Keys=Array(test1Dic.keys)
    println(test7Keys)
     
    //7.1 将所有的值转为数组
    var test7Values=Array(test1Dic.values)
    println(test7Values)
    
    
    

    swift 字典常用方法

    https://blog.csdn.net/qq_32582087/article/details/49737755

    https://wenku.baidu.com/view/2eef2223874769eae009581b6bd97f192279bf3a.html

    集合

    ** 集合的常用**

    https://wenku.baidu.com/view/92af6034f9d6195f312b3169a45177232f60e4d0.html

    import UIKit
    
    var greeting = "Hello, playground"
    
    // 集合类型:集合 Set
    // 不关注顺序,但不可以重复
    
    // 创建Set
    var set: Set<Int> = [1, 2, 3]
    var set2 = Set(arrayLiteral: 1, 2, 3)
    
    // set 获取最大值
    set.max()
    
    // set 获取最小值
    set.min()
    
    // 获取第一个元素,顺序不定
    set[set.startIndex]
    set.first
    
    // 通过下标获取元素,只能向后移动,不能向前
    // 获取第二个元素
    set[set.index(after: set.startIndex)]
    // 获取某个下标后几个元素
    set[set.index(set.startIndex, offsetBy: 2)]
    
    // 获取元素个数
    set.count
    
    // 判断空集合
    if set.isEmpty {
       print("set is empty")
    }
    
    // 判断集合是否包含某个元素
    if (set.contains(3)) {
        print("set contains 3")
    }
    
    // 插入
    set.insert(0)
    
    // 移除
    set.remove(2)
    set.removeFirst()
    // 移除指定位置的元素,需要用 ! 拆包,拿到的是 Optional 类型,如果移除不存在的元素,EXC_BAD_INSTRUCTION
    set.remove(at: set.firstIndex(of: 1)!)
    
    set.removeAll()
    
    
    var setStr1: Set<String> = ["1", "2", "3", "4"]
    var setStr2: Set<String> = ["1", "2", "5", "6"]
    
    // Set 取交集
    setStr1.intersection(setStr2) // {"2", "1"}
    
    // Set 取交集的补集
    setStr1.symmetricDifference(setStr2) // {"4", "5", "3", "6"}
    
    // Set 取并集
    setStr1.union(setStr2) // {"2", "3", "1", "4", "6", "5"}
    
    // Set 取相对补集(差集),A.subtract(B),即取元素属于 A,但不属于 B 的元素集合
    setStr1.subtract(setStr2) // {"3", "4"}
    
    var eqSet1: Set<Int> = [1, 2, 3]
    var eqSet2: Set<Int> = [3, 1, 2]
    // 判断 Set 集合相等
    if eqSet1 == eqSet2 {
        print("集合中所有元素相等时,两个集合才相等,与元素的顺序无关")
    }
    
    let set3: Set = [0, 1]
    let set4: Set = [0, 1, 2]
    // 判断子集
    set3.isSubset(of: set4) // set3 是 set4 的子集,true
    set3.isStrictSubset(of: set4) // set3 是 set4 的真子集,true
    // 判断超集
    set4.isSuperset(of: set3) // set4 是 set3 的超集,true
    set4.isStrictSuperset(of: set3) // set4 是 set3 的真超集,true
    
    // 遍历元素
    for ele in set4 {
        print(ele)
    }
    
    // 遍历集合的枚举
    for ele in set4.enumerated() {
        print(ele)
    }
    
    // 下标遍历
    for index in set4.indices {
        print(set4[index])
    }
    
    // 从小到大排序后再遍历
    for ele in set4.sorted(by: <) {
        print(ele)
    }
    
    

    相关文章

      网友评论

          本文标题:swift重点语法和算法相关的

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