Swift 中的 DNA 到 RNA 转录
DNA to RNA transcription in Swift
我正在尝试 return 给定 Swift 中的 DNA 链(字符串)的 RNA 互补。基本上,如果 DNA 有 "T",我会用 "U".
替换它
我的代码是:
func toRNA(DNA: String) -> String{
var RNA = DNA
for ntide in RNA{
if ntide == "T"{
ntide = "U"
}
}
return RNA
}
Swift:: 错误:
cannot assign to value: 'ntide' is a 'let' constant
ntide = "U"
~~~~~ ^
使用
func toRNA(DNA: String) -> String{
return DNA.replacingOccurrences(of: "T", with: "U")
}
您的问题是由于 for ... in ...
循环中声明的变量是不可变的。对于简单的 Collection
,您只需遍历 Collection
中存在的索引范围并使用下标访问可变变量的值。
func toRNA(_ DNA:[Character])->String{
var RNA = DNA
for i in 0..<DNA.count {
if RNA[i] == "T" {
RNA[i] = "U"
}
}
return String(RNA)
}
let dna:[Character] = ["A","C","G","T"]
toRNA(dna) //"ACGU"
但是,由于String
索引和下标的不同,这对你的问题来说不是那么简单,因此上面的例子使用Array<Character>
来展示泛型方法。对于字符串的具体问题,请参阅以下解决方法。
您可以解决此问题,而不是将 DNA
复制到 RNA
,然后遍历 RNA
来寻找必要的字符,您只需遍历 DNA
并更改要添加的字符。
func toRNA(DNA: String) -> String{
var RNA = ""
for char in DNA {
if char == "T" {
RNA.append("U")
} else {
RNA.append(char)
}
}
return RNA
}
一个更简单的解决方案,它不能解决特定问题,但适用于这个特定问题,是使用简单的 map
将所有字符 "T"
转换为 "U"
.
func toRNA(DNA: String) -> String{
return String(DNA.map({[=12=]=="T" ? "U" : [=12=]}))
}
我正在尝试 return 给定 Swift 中的 DNA 链(字符串)的 RNA 互补。基本上,如果 DNA 有 "T",我会用 "U".
替换它我的代码是:
func toRNA(DNA: String) -> String{
var RNA = DNA
for ntide in RNA{
if ntide == "T"{
ntide = "U"
}
}
return RNA
}
Swift:: 错误:
cannot assign to value: 'ntide' is a 'let' constant
ntide = "U"
~~~~~ ^
使用
func toRNA(DNA: String) -> String{
return DNA.replacingOccurrences(of: "T", with: "U")
}
您的问题是由于 for ... in ...
循环中声明的变量是不可变的。对于简单的 Collection
,您只需遍历 Collection
中存在的索引范围并使用下标访问可变变量的值。
func toRNA(_ DNA:[Character])->String{
var RNA = DNA
for i in 0..<DNA.count {
if RNA[i] == "T" {
RNA[i] = "U"
}
}
return String(RNA)
}
let dna:[Character] = ["A","C","G","T"]
toRNA(dna) //"ACGU"
但是,由于String
索引和下标的不同,这对你的问题来说不是那么简单,因此上面的例子使用Array<Character>
来展示泛型方法。对于字符串的具体问题,请参阅以下解决方法。
您可以解决此问题,而不是将 DNA
复制到 RNA
,然后遍历 RNA
来寻找必要的字符,您只需遍历 DNA
并更改要添加的字符。
func toRNA(DNA: String) -> String{
var RNA = ""
for char in DNA {
if char == "T" {
RNA.append("U")
} else {
RNA.append(char)
}
}
return RNA
}
一个更简单的解决方案,它不能解决特定问题,但适用于这个特定问题,是使用简单的 map
将所有字符 "T"
转换为 "U"
.
func toRNA(DNA: String) -> String{
return String(DNA.map({[=12=]=="T" ? "U" : [=12=]}))
}