当前位置: 首页 > wzjs >正文

织梦营销型网站模板现在广告行业好做吗

织梦营销型网站模板,现在广告行业好做吗,哪个网站发布招聘信息免费,外贸网站自建站文章目录 摘要描述题解答案题解代码分析示例测试及结果时间复杂度空间复杂度总结 摘要 在开发中我们经常遇到“模式匹配”的问题,比如日志分类、用户意图识别、甚至是在一些权限系统中做规则映射判断。这类问题的本质是判断两个结构是否具有一致的对应关系。LeetCo…

在这里插入图片描述
在这里插入图片描述

文章目录

    • 摘要
    • 描述
    • 题解答案
    • 题解代码分析
    • 示例测试及结果
    • 时间复杂度
    • 空间复杂度
    • 总结

摘要

在开发中我们经常遇到“模式匹配”的问题,比如日志分类、用户意图识别、甚至是在一些权限系统中做规则映射判断。这类问题的本质是判断两个结构是否具有一致的对应关系。LeetCode 290 题“单词规律”就是这样的一个小而经典的场景。

本文将用 Swift 完整讲解该问题的解法,包含实际 Demo、代码分析,并用口语化方式带你理解每一处逻辑。

描述

我们有一个字符串 pattern,比如 "abba",还有一个字符串 s,比如 "dog cat cat dog"。我们要判断:这个字符串 s 是不是按照 pattern 中的规律来组织的。

规律是什么意思?就是 pattern 中的每个字符都应该“代表”字符串中的一个具体单词,而且这个关系必须是双向绑定的——不能两个字母指向同一个单词,也不能一个字母指向两个不同的单词。

举个例子:

  • pattern = "abba"
  • s = "dog cat cat dog"

意思就是:

  • 第一个 a 对应 dog
  • 第一个 b 对应 cat
  • 第二个 b 还是 cat
  • 第二个 a 还是 dog

前后一致,双向对应 —— 合法。

但如果是:

  • pattern = "abba"
  • s = "dog cat cat fish"

这就不合法了,因为最后的 a 对应的是 fish,而最开始是 dog,对应关系对不上。

题解答案

我们要做的就是:

  1. 拆开 s,按空格分割成单词数组。
  2. 遍历 pattern 和单词数组,分别记录 pattern 字符 -> 单词,和 单词 -> pattern 字符 的映射关系。
  3. 每一步都去检查是否一致。只要发现有一个地方对不上,就返回 false。
  4. 如果都对上了,就返回 true。

题解代码分析

下面是完整的 Swift 代码,包含注释,适合直接运行:

import Foundationfunc wordPattern(_ pattern: String, _ s: String) -> Bool {let words = s.split(separator: " ").map { String($0) }let chars = Array(pattern)// 如果数量不一致,肯定不符合规律guard words.count == chars.count else {return false}// 字母 -> 单词 的映射var charToWord = [Character: String]()// 单词 -> 字母 的映射var wordToChar = [String: Character]()for (c, w) in zip(chars, words) {if let mappedWord = charToWord[c] {if mappedWord != w {return false}} else {charToWord[c] = w}if let mappedChar = wordToChar[w] {if mappedChar != c {return false}} else {wordToChar[w] = c}}return true
}

示例测试及结果

我们来跑几个例子看看:

print(wordPattern("abba", "dog cat cat dog"))  // true
print(wordPattern("abba", "dog cat cat fish")) // false
print(wordPattern("aaaa", "dog cat cat dog"))  // false
print(wordPattern("abc", "one two three"))     // true
print(wordPattern("abc", "one one one"))       // false

结果输出

true
false
false
true
false

每一个测试例子都能直观说明题目的要求。

时间复杂度

这个算法是 O(n) 级别的,n 是 pattern 的长度(也就是 s 中单词的数量)。因为我们是线性遍历了一次 patterns,并做了常数级别的字典操作。

空间复杂度

空间上我们用了两个 HashMap(也就是 Swift 的 Dictionary),分别记录 char -> wordword -> char,最坏情况下就是每个字符和单词都不一样,那就是 O(n) 空间。

总结

“单词规律”这个问题看起来像字符串处理,其实本质是双射关系映射 —— 字母到单词,单词到字母都要唯一对应。日常开发中,如果你在做“模板渲染”、“日志模式分类”、“命名规范检查”等功能时,都可能会遇到类似的需求。

这类题的关键点是:

  • 把 pattern 和 s 拆开并配对
  • 同时维护两个方向的映射
  • 在每一对中,及时做一致性校验

用 Swift 解题时,字典的高效查找和 zip() 的组合迭代都非常方便实用,也是写这类题的常见技巧。

http://www.dtcms.com/wzjs/524451.html

相关文章:

  • 新增网站备案时间深圳居家办公
  • 网站建设常规尺寸免费html网页模板
  • 南山品牌网站建设企业微信scrm系统
  • 怎么做类似淘宝一样的网站吗站长统计性宝app
  • 有什么网站是可以做ui的网站流量统计平台
  • 成都网站建设 四川冠辰科技变现流量推广app
  • 深圳建站公司兴田德润放心子域名网址查询
  • 网站后台管理系统操作怎么做一个自己的网页
  • 西安响应式网站建设公司企业网络营销推广平台
  • 国外英文网站市场营销七大策略
  • 做设计英文网站网络营销常用的工具有哪些
  • 游戏是怎么做的视频网站关键词排名优化品牌
  • 营销策划方案的目的武汉网站开发公司seo
  • 怎么做网站盗号北京网站制作公司
  • 做任务刷王者皮肤网站微信营销的成功案例
  • 崇明苏州网站建设网络广告策划书范文
  • 简单的购物网站怎么做广州seo外包
  • wordpress文章增加新字段天津seo方案
  • 网站建设sem怎么做和业务多一样的平台
  • win7系统做asp网站广告联盟骗局
  • 域名没过期 网站打不开怎么办汕头网站制作设计
  • 重庆专业微信网站制作域名查询站长之家
  • 网站建设公司有多少网络推广的常用方法
  • 网上购物网站设计百度首页推荐关不掉吗
  • 网站制作.com语言站长平台工具
  • 做微淘要开通网站吗google在线代理
  • 大型购物网站建设搜索引擎营销特点是什么
  • 东莞工业品网站建设大连seo
  • 潍坊网站建设评价网站项目开发流程
  • 如何让百度搜索到自己的网站博客可以做seo吗