如何转置字符串数组

如何转置字符串数组,第1张

如何转置字符串数组

您尝试做的事情称为 换位 。旋转一个看起来像这样的数组:

[[1, 2, 3], [4, 5, 6]]

变成看起来像这样的数组:

[[1, 4], [2, 5], [3, 6]]

为此,让我们定义一个通用的转置函数并将其应用于您的问题

// import the text file from the bundleguard    let inputURL = NSBundle.mainBundle().URLForResource("input", withExtension: "txt"),    let input = try? String(contentsOfURL: inputURL)    else { fatalError("Unable to get data") }// Convert the input string into [[String]]let strings = input.componentsSeparatedByString("n").map { (string) -> [String] in    string.componentsSeparatedByString(":")}// Define a generic transpose function.// This is the key to the solution.public func transpose<T>(input: [[T]]) -> [[T]] {    if input.isEmpty { return [[T]]() }    let count = input[0].count    var out = [[T]](count: count, repeatedValue: [T]())    for outer in input {        for (index, inner) in outer.enumerate() { out[index].append(inner)        }    }    return out}// Transpose the stringslet results = transpose(strings)

您可以使用看到转置的结果

for result in results {    print("(result)")}

哪个生成(例如)

["AYGA", "AYLA", "AYMD"]["GKA", "LAE", "MAG"]["GOROKA", "", "MADANG"]["GOROKA", "LAE", "MADANG"]["PAPUA NEW GUINEA", "PAPUA NEW GUINEA", "PAPUA NEW GUINEA"]["06", "00", "05"]["04", "00", "12"]["54", "00", "25"]["S", "U", "S"]["145", "00", "145"]["23", "00", "47"]["30", "00", "19"]["E", "U", "E"]["5282", "0000", "0020"]

这样的优点是不依赖于您拥有的数组数量,而子数组的数量则取自第一个数组的计数。

您可以为此下载一个示例游乐场,该输入在游乐场的资源中作为文件输入。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5126487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存