博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【译】Swift算法俱乐部-暴力字符串搜索
阅读量:6072 次
发布时间:2019-06-20

本文共 1431 字,大约阅读时间需要 4 分钟。

本文是对 翻译的一篇文章。

是 网站出品的用Swift实现算法和数据结构的开源项目,目前在GitHub上有18000+⭐️,我初略统计了一下,大概有一百左右个的算法和数据结构,基本上常见的都包含了,是iOSer学习算法和数据结构不错的资源。

?是我对Swift Algorithm Club,边学习边翻译的项目。由于能力有限,如发现错误或翻译不妥,请指正,欢迎pull request。也欢迎有兴趣、有时间的小伙伴一起参与翻译和学习?。当然也欢迎加⭐️,?????。

本文的翻译原文和代码可以查看?


暴力字符串搜索(Brute-Force String Search)

如果不允许导入Foundation并且不能使用NSStringrangeOfString()方法,那么如何在纯Swift中编写字符串搜索算法呢? 目标是在String上实现indexOf(pattern: String)扩展,返回第一次出现的搜索模式的String.Index,如果在字符串中找不到模式,则返回nil

例子:

// Input: let s = "Hello, World"s.indexOf("World")// Output:
7// Input:let animals = "?????????????????????"animals.indexOf("?")// Output:
6复制代码

注意: 牛的索引是6,而不是你想象的3,因为字符串为表情符号使用更多的存储空间。 String.Index的实际值并不那么重要,只要它指向字符串中的正确字符。

这是暴力解决方案:

extension String {    func indexOf(_ pattern: String) -> String.Index? {                for i in self.indices {            var j = i            var found = true            for p in pattern.indices {                if j == self.endIndex || self[j] != pattern[p] {                    found = false                    break                } else {                    j = self.index(after: j)                }            }            if found {                return i            }        }        return nil    }}复制代码

这将依次查看源字符串中的每个字符。 如果字符等于搜索模式的第一个字符,则内部循环检查模式的其余部分是否匹配,如果未找到匹配项,则外循环将从中断处继续。 重复此过程直到找到完全匹配或到达源字符串的结尾。

暴力方法运行正常,但效率不高(或漂亮)。 不过,暴力方法应该可以在小字符串上正常工作。 对于使用大块文本更好的智能算法,请查看字符串搜索。

作者:Matthijs Hollemans

翻译:
校对:

转载地址:http://tcigx.baihongyu.com/

你可能感兴趣的文章
第三章 计算机及服务器硬件组成结合企业运维场景 总结
查看>>
IntelliJ IDEA解决Tomcal启动报错
查看>>
默认虚拟主机设置
查看>>
七周五次课(1月26日)
查看>>
Linux系统一些系统查看指令
查看>>
php中的短标签 太坑人了
查看>>
[译] 可维护的 ETL:使管道更容易支持和扩展的技巧
查看>>
### 继承 ###
查看>>
数组扩展方法之求和
查看>>
astah-professional-7_2_0安装
查看>>
函数是对象-有属性有方法
查看>>
uva 10107 - What is the Median?
查看>>
Linux下基本栈溢出攻击【转】
查看>>
c# 连等算式都在做什么
查看>>
使用c:forEach 控制5个换行
查看>>
java web轻量级开发面试教程摘录,java web面试技巧汇总,如何准备Spring MVC方面的面试...
查看>>
根据调试工具看Vue源码之组件通信(一)
查看>>
Thrift RPC 系列教程(5)—— 接口设计篇:struct & enum设计
查看>>
斯坦福-随机图模型-week1.5
查看>>
灵活的运用Model类
查看>>