美文网首页
IOS 算法(基础篇) ----- 判断子序列

IOS 算法(基础篇) ----- 判断子序列

作者: ShawnAlex | 来源:发表于2020-07-27 15:59 被阅读0次

今天看到一道子序列算法题, 给大家分享一下

如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲的告诉你!

给定两个字符串s, t 判断s是否是t的子序列
附: 字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串:
例如:
s = "axc", t = "ahbgxc" 返回 true.
s = "ayh", t = "ahbgxc" 返回 false.

方法1

    func isSubsequence(_ s: String, _ t: String) -> Bool {
        //将s字符串转成char数组
        var charArr = [Character](), cut = t, iterator = s.makeIterator()
        while let char = iterator.next() {
            charArr.append(char)
        }
        //循环, 条件char数组不为空
        while !charArr.isEmpty {
            //数组删除第一个元素, 并获取这个元素
            let element = charArr.removeFirst()
            //判断t中是否含有这个元素, 并获取元素下标, 不包含跳出循环
            if let index = cut.firstIndex(of: element) {
                //切割数组, 只留下下标之后的部分
                cut = cut.substring(from: cut.index(index, offsetBy: 1))
            }else {
                return false
            }
        }
        //如果都t包含s, 则charArr则会为空, 返回charArr.isEmpty是否为空数组即可
        return charArr.isEmpty
    }

方法2
循环判断, b中是否一一包含s中元素, 双指针法

    func isSubsequence(_ s: String, _ t: String) -> Bool {
        var i = 0, j = 0
        while i < s.count && j < t.count {
            let a = s.index(s.startIndex, offsetBy: i), b = t.index(t.startIndex, offsetBy: j)
            if s[a] == t[b] {
                i+=1
            }
            j+=1
        }
        return i == s.count
    }

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)

IOS 算法合集地址

相关文章

  • IOS 算法(基础篇) ----- 判断子序列

    今天看到一道子序列算法题, 给大家分享一下 如果你想知道什么题? 既然你诚心诚意的发问了, 我就大发慈悲的告诉...

  • 判断子序列

    给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字符串 t...

  • 判断子序列

    题目: 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为 s 和 t 中仅包含英文小写字母。字...

  • [LeetCode] 392. Is Subsequence (

    原题 判断子序列

  • 392. 判断子序列

    392. 判断子序列

  • 02-13:leetcode重刷7之动态规划

    动态规划 动态规划的重点是:状态转移方程 1、判断子序列 leetcode392. 判断子序列[https://l...

  • 动态规划 - 判断子序列

    题目 leetcode, 392. 判断子序列给定字符串 s 和 t ,判断 s 是否为 t 的子序列。你可以认为...

  • LeetCode-392-判断子序列

    判断子序列 题目描述:给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除...

  • 基础序列算法

    参考:山东大学生物信息学课程 构建后后缀树 最高分-子序列问题 构建后缀树 简介后缀树提出的目的是用来支持有效的字...

  • 子序列问题

    判断序列S是否是序列T的子序列 解析:典型的双指针问题 Code

网友评论

      本文标题:IOS 算法(基础篇) ----- 判断子序列

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