Swift 的 String.count 的 BigO 是什么?

2023-11-25

当 swift 使用时String.count is it:

O(n)每次我们调用它时,我们都会迭代整个字符串以对其进行计数

or

O(1)其中 swift 之前已经存储了该数组的大小并简单地访问它。


绝对是O(n)。来自斯威夫特书:

因此,如果不迭代字符串以确定其扩展字素簇边界,则无法计算字符串中的字符数。如果您正在使用特别长的字符串值,请注意count属性必须迭代整个字符串中的 Unicode 标量才能确定该字符串的字符。

这有一些影响,其中最大的是整数下标(即str[5])无法通过标准库获得。在内部,String使用 ASCII 或 UTF-16 编码(从 Swift 5 开始,它使用仅限 UTF-8)。如果字符串仅使用 ASCII 字符,则count can be O(1)但 ASCII 只有 127 个字符,因此请将此视为例外而不是规则。

NSString另一方面,始终使用 UTF-16,因此访问其length is O(1)。还要记住NSString.length != String.count(尝试带有表情符号的字符串,您就会看到)。

至于你的第二个问题,它不缓存count以供后续调用。每次致电count是这样O(n),即使字符串没有改变。中的代码基础回购协议也证实了这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Swift 的 String.count 的 BigO 是什么? 的相关文章

  • 如何在不使用 viewWillDisappear 的情况下使 NSTimer 无效/取消初始化?

    var faderTimer NSTimer override func viewDidLoad super viewDidLoad self faderTimer NSTimer scheduledTimerWithTimeInterva
  • 如何打印数组中每个单词之间的空格

    我记得在 w3school 上看到过一个函数 你可以打印出数组的所有单词并在它们之间添加一个空格 但无论我如何谷歌我都找不到它 其外观示例 function printWords var array Car Bus Motorcykle p
  • 使用 UItableviewCell 实现 Google 地图

    我正在尝试在 UItableviewCell 组件内实现谷歌地图 我这样做的方法是在原型单元中定义 GMSMapView 然后使用 dequeueReusableCell 方法配置地图单元 但是 我尝试应用的任何更改都会失败 例如添加标记
  • 在 Swift 中对约束进行动画处理

    我有一个UITextField我想在点击时放大它的宽度 我设置了约束 并确保左侧约束的优先级低于我尝试在右侧设置动画的约束 这是我尝试使用的代码 move the input box UIView animateWithDuration 1
  • 如何使用 jQuery 通过 Ajax 发送复选框数组的值?

    我有一个包含很多表单字段的表单 12 x n 行 每行中的第一个字段 代表产品 是一个类似于以下内容的复选框
  • JDBC插入实数数组

    我试图将一个真实的数组插入到 postgresql 数组中 该表的定义是 String sqlTable CREATE TABLE IF NOT EXISTS ccmBlock sampleId INTEGER block REAL 插入内
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • UIStackView分布均匀填充

    所以 我有一个UIStackView其中包含四 4 UIViews 如果我删除其中一 1 个UIViews 其他三 3 个将填满UIStackView 我的问题 如何添加最大高度UIView这样它就不会填满整个空间UIStackView即使
  • Admob 广告无法快速显示

    您好 我正在尝试将 admob 广告添加到已使用 swift 上传到应用商店的应用程序中 我在 admob 中制作了一个应用程序并复制了 appid 和广告 id 并显示了各自的横幅广告和插页式广告 这里的问题是当我写这行时 request
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • Swift 运行时库与 Swift 标准库

    In this 关于如何使用 CocoaPods 的教程 https www raywenderlich com 97014 use cocoapods with swift我无法理解以下段落 与 Objective C 不同 标准 Swi
  • 如何使用 Vapor 和 Leaf 将图像从浏览器上传到 Amazon S3?

    我已经设置了 AWS S3 存储桶 并且可以使用 Vapor 3 和 Postman 上传文件 PUT request 和标头 x amz acl public read 但我想从浏览器中执行此操作 我使用的是 leaf 那么如何从浏览器上
  • Swift SpriteKit edgeLoopF​​romRect 问题

    下面的代码可以识别底部和顶部边缘场景和球按预期弹开 但是 那左边缘和右边缘现场的情况一直被破坏 如果施加足够的力 球会离开屏幕 然后最终返回 就好像场景的边缘超出了 iPhone 模拟器窗口的边缘 import SpriteKit clas
  • AVAssetExportSession 无法导出从 iCloud 下载的视频

    我正在尝试创建从用户相册中选择的视频的缩小版本 输出的最大尺寸为 720p 因此 在检索视频时 我使用 mediumQualityFormat as the deliveryMode 如果用户设备中不存在原始视频或其中等质量版本 这会导致
  • Swift - 元类型 .Type 和 .self 之间有什么区别?

    元类型有什么区别 Type and self在斯威夫特 Do self and Type返回一个struct 我明白那个 self可以用来检查dynamicType 你如何使用 Type 首先也是最重要的是查看 Apple 文档type o
  • ReactiveCocoa 将 SignalProducers 合二为一

    我正在使用 ReactiveCocoa 并且我有几个 SignalProducers let center NSNotificationCenter defaultCenter let signalProducer1 center rac
  • 根据一个数组对多个数组进行排序

    如何根据数组对一堆数组进行排序createdAt 例如 2015 11 02 19 19 35 0000 将它们组合成另一种类型 字典 以便在 tableView 中使用是否有益 如果有的话如何 var comment AnyObject
  • 使用 python/numpy 重塑数组

    我想重塑以下数组 gt gt gt test array 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 为了得到 gt gt gt test2 array 11 12 21 22 13 14
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • iOS:如何知道 reloadData() 已完成其任务?

    我想滚动到给定索引 self boldRowPath 但是当我调试时scrollToRow之前执行reloadData 如何知道reloadData已完成 func getAllTimeEvent self arrAllTimeEvent

随机推荐

  • 哪些 HTML 标签可以与 onClick 一起使用?

    哪些 HTML 标签可以有onclick事件和哪个不能 如果有我无法包含的标签onclick我想知道为什么不活动 onclick func 有什么规则是你应该遵守的吗 所有 HTML 元素都可以有一个onclick属性 See HTML 5
  • 如何更改 vim 中 :next 和 :previous 的顺序?

    在 vim 中 我在缓冲区中打开 3 个文件 A B C 按此顺序 我要返回缓冲区 B 在 B 中打开缓冲区 D e d 所以现在我在 D 中 但是当我使用 bprevious 时 我会转到 C 但我想转到上次访问的缓冲区 B 是否可以更改
  • GitPython:如何在 GitPython 中访问提交中的文件内容

    我是 GitPython 新手 我正在尝试获取提交中文件的内容 我能够从特定提交中获取每个文件 但每次运行该命令时都会收到错误 现在 我知道该文件存在于 GitPython 中 但每次运行程序时 都会收到以下错误 returned non
  • C 编程:仅从 fgets 打印 int

    看到这个main int main void int i int ch char str 512 fgets str sizeof str stdin for i 0 i lt strlen str i if str i 0 str i n
  • 创建对象后检查是否为 null

    我正在创建一个新对象 myobject t new myobject 如果新成功 我应该检查下一行是否有空引用 if null t 或者我可以确定这个对象肯定会不同于 null Thanks 根据C 文档 if new未能成功为新对象实例分
  • 为什么要使用版本控制? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我正在读一篇博客 作者这样说 除非签入版本控制系统 否则代码就不存在 对你所做的一切使用版本控制 任何版本控制 SVN Git 甚至 CVS 掌握它并使用它 我从未使用过任何类型的版本控制
  • Jenkinsfile 中的动态参数?

    我怎样才能使用Jenkins 动态插件 in a Jenkinsfile 我正在寻找的是 Jenkinsfile 片段 启用Build with ParametersJenkins 工作中的选项 选择后 脚本将填充可使用的列表Dynamic
  • 如何更改Wildfly服务器的IP地址

    我正在准备一个在 Wildfly 上运行的程序以部署到客户站点 并且我需要更改 Wildfly 启动的 IP 地址 例如 如何将 Wildfly 配置为在 127 0 0 2 而不是 127 0 0 1 启动 Update 我在 Windo
  • Ansible:根据 stdout 中的值对异步任务执行 failed_when:

    我正在尝试执行一个failed when 基于来自标准输出的值的异步任务 这是我的任务 name RUN SOME TASK LOCALLY command
  • C#:解决继承类与其基类之间的无效转换异常

    我有两个课程 名为 帖子 和 问题 问题定义为 public class Question Post 我的 Question 类不会覆盖 Post 的任何成员 它只是表达其他一些成员 我想要完成什么 我有一个 Post 类型的对象 其成员已
  • 等待在没有异步包装器的 Chrome 控制台中工作[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 我读过 MDN 的等待定义是 await 运算符用于等待 Promise 它只能在异步函数内使用 这在编辑器中有效 但是在 chrome 控制台中 我编写了一个异步函数 然后在全局执行
  • 仅使用 javaScript 对 HTML 中的表格按日期值 desc 列进行排序

    是否可以仅使用 javaScript 来实现排序功能 而不需要任何其他排序库 假设我有一个表 它的第一列具有以下格式的日期值 MM dd yyyy 表还有两列 如下所示 table width 360 border 1 thead tr t
  • 如何在网站中显示类似youtube的视频播放器?

    我正在开发一个网站 我希望上传摄像头录制的视频 并且仅对登录用户可见 但不可下载 我还想编辑视频 让某些图像出现在背景中 并可能记下他们最后一次停止观看视频的时间 也就是说 如果他们在 30 分钟后停止观看 我希望他们下次观看时从 30 0
  • python yaml更新保留顺序和注释

    我使用 python 将密钥插入到 Yaml 中 但我想保留 yaml 中的顺序和注释 This Key is used for identifying Parent tests ParentTest test JOb1 myjob nam
  • 将数据从 Python 发送到 Javascript (JSON)

    我知道 JSON 可以解决这个问题 但我在实现它时遇到了问题 这是我的方法的详细信息 数据是用Python计算的 由于数据大小是动态的 因此我需要使用 JavaScript 为输出创建额外的 HTML 表格行 因此 我需要将数据从 Pyth
  • Selenium 服务器错误:无法创建新服务 chromedriverservice

    我尝试在 Windows 10 计算机上运行 webdriverio 但在尝试运行测试 js 文件时不断遇到相同的问题 所以我运行这个 jar your download directory selenium server standalo
  • 重用WCF服务客户端

    我有一个 WCF Web 服务 充当我的 ASP NET 网页的数据提供程序 在整个网页中 通过自动生成的 ServiceClient 对 Web 服务进行了多次调用 目前 我创建一个新的 ServiceClient 并为每个请求打开它 即
  • R 中的连续引用编号:如果是连续的,则用连字符分隔数字 - 如果不是,则添加逗号

    我想生成连续引用数对于 R 中的数字 如果数字是连续的 则应使用连字符分隔它们 否则 数字之间用逗号分隔 例如 数字1 2 3 5 6 8 9 10 11 and 13应该出来为1 3 5 6 8 11 13 这个问题已经被之前回答过c 并
  • 在 Angular 2 中的 @ngModule 中声明多个组件

    我正在开发一个大型应用程序Angular 2 and ASP netMVC 我的应用程序中有大约 120 个组件 它们都在 ngModule 声明块中声明 NgModule imports CommonModule declarations
  • Swift 的 String.count 的 BigO 是什么?

    当 swift 使用时String count is it O n 每次我们调用它时 我们都会迭代整个字符串以对其进行计数 or O 1 其中 swift 之前已经存储了该数组的大小并简单地访问它 绝对是O n 来自斯威夫特书 因此 如果不