当前位置: 首页 > 知识库问答 >
问题:

将两个字符的字符串转换为布尔数组的快速方法是什么?

郁权
2023-03-14
let input: String = "001"
let output: [Bool] = [false, false, true]

我天真的尝试是这样的:

input.characters.map { $0 == "1" }

但这比我想要的慢多了。我的分析显示map是减速的地方,但我不确定我能让它变得简单多少。

我觉得如果没有Swift/Objc的开销,这将是非常快的。在C语言中,我认为这是一个简单的for循环,其中一个字节的内存与一个常量相比较,但我不确定应该查看的函数或语法是什么。

我也试过

output = []
for char in input.characters {
    output.append(char == "1")
}

而且快了15%左右。我希望不止这些。

共有1个答案

艾国安
2023-03-14

这更快:

// Algorithm 'A'
let input = "0101010110010101010"
var output = Array<Bool>(count: input.characters.count, repeatedValue: false)
for (index, char) in input.characters.enumerate() where char == "1" {
    output[index] = true
}

更新:下输入=“01010101101010101001000100010001010101010101010101”

0.0741/0.0087,比作者的方法快8.46倍。数据相关性越大越正。

// Algorithm 'B'
let input = "10101010101011111110101000010100101001010101"
var output = Array<Bool>(count: input.nulTerminatedUTF8.count, repeatedValue: false)
for (index, code) in input.nulTerminatedUTF8.enumerate() where code == 49 {
    output[index] = true
}
 类似资料:
  • 在Objective-C中,我使用了以下内容:

  • 问题内容: 我有一个字符串: 我想要一个简单的方法将其转换为实际的。 我能从中挖掘出的所有其他问题都与将int字符串转换为数组有关。 我试着做 但是我明白了 手动清理边缘并去除斜线似乎是我做错了什么。 我很好奇是否有一种简单的方法可以将字符串数组作为字符串转换为字符串数组。 即转换为 解决方案 (感谢@Eric D) 问题答案: 将您的“字符串数组”编码为数据,然后将此数据作为JSON解码为Swi

  • 问题内容: 如何快速将数组转换为 JSON 字符串?基本上,我有一个文本框,其中嵌入了一个按钮。按下按钮后,文本字段文本将添加到中。此外,我想将此数组转换为 JSON 字符串。 这是我尝试过的: 我也想使用我的方法返回 JSON 字符串。 问题答案: 就目前而言,您正在将其转换为数据,然后尝试将数据转换为JSON形式的对象(失​​败,不是JSON)并将其转换为字符串,基本上,您进行了一堆毫无意义的

  • 问题内容: 我有一个映射到Swift的C函数定义为: 我正在尝试传递函数的路径并尝试过: 但是在path [i]上我得到了错误: ‘下标’不可用:不能下标Int范围的字符串 也不 也不管用 除了无法正常工作外,我认为还必须有一种更好,更轻松的方法来做到这一点。以前使用CString在StackOverflow上的答案似乎不再起作用。有什么建议? 问题答案: 使用CString在StackOverf

  • 问题内容: 这是我从文本文件中读取的一行: 我使用readline()以字符串形式读取它。现在,将其转换回数组的最快方法是什么? 谢谢! 问题答案: 我不确定这是最快的,但绝对是最安全/最简单的: 常规也可以工作: 我的机器的一些基本计时: 因此,根据我的计算机,速度比快50%。但是,这绝对是不安全的,除非您完全信任它,否则切勿在任何字符串上使用它。除非这是一个真正的演示瓶颈,并且您100%相信输

  • 问题内容: 我需要以给定的精度将double转换为字符串。(或DecimalFormat)可以完成这项工作,但基准测试显示,即使转换速度不是非常快(在我的计算机上转换一百万个数字,大约需要1-3秒),它的速度仍然很慢。 有什么更好的方法吗? 更新:基准化结果 从0到1000000的随机数,结果是以毫秒为单位的操作数(Java 1.7.0_45) 更新: Java 10 + Ryu 问题答案: 免责