将 char 与 java 与 python 中的字符串索引进行比较
Comparing char to string index in java vs python
我知道有很多答案可以简单地解决如何在 Java 中执行此操作,但我正在寻找一个 概念上类似于我可能在 [=] 中执行的实现的解决方案36=] 程序,因为这对我来说更熟悉。
我的 Java 函数 cgRatio
获取一个 DNA 字符串并遍历每个索引以计算字符串中 "C" 和 "G" 字符值的出现次数,并且 return 相对于字符串长度的比率。例如,如果我将以下字符串作为函数的参数传递:
"ATGGCGCATTAA"
我会得到 5/12 的 return 值或 4.1666...
的浮点数
在Python中,这个函数可以这样写:
def cgRatio(dna):
count = 0
for i in range(len(dna)):
if dna[i] == "C" or dna[i] == "G":
count += 1
return 1.0 * count/len(dna)
一个简单的 print cgRatio("ATGGCGCATTAA")
将产生所需的结果。
我见过一些解决方案,例如采用 dna.charAt(i)
并将其转换回字符串或在函数开头实例化新的 char
对象以进行比较。对于如此简单的任务,这似乎过于复杂。 Python 是在这个任务中更胜一筹,还是在 Java 中有更有效的方法来解决这个问题?
简单的 java 代码为:
for (int i = 0; i < dna.length(); i++) {
char c = dna.charAt(i);
if (c == 'C' || c == 'G') {
count++;
}
}
return (double)count / dna.length();
绝对没有理由将字符转换为 "string" 以进行比较!
如果您正在寻找 "less" 代码解决方案,您可以使用 "for each" 风格:
for (char c : dna.toCharArray()) {
易于理解,易于阅读,但需要创建 new char array。
我知道有很多答案可以简单地解决如何在 Java 中执行此操作,但我正在寻找一个 概念上类似于我可能在 [=] 中执行的实现的解决方案36=] 程序,因为这对我来说更熟悉。
我的 Java 函数 cgRatio
获取一个 DNA 字符串并遍历每个索引以计算字符串中 "C" 和 "G" 字符值的出现次数,并且 return 相对于字符串长度的比率。例如,如果我将以下字符串作为函数的参数传递:
"ATGGCGCATTAA"
我会得到 5/12 的 return 值或 4.1666...
在Python中,这个函数可以这样写:
def cgRatio(dna):
count = 0
for i in range(len(dna)):
if dna[i] == "C" or dna[i] == "G":
count += 1
return 1.0 * count/len(dna)
一个简单的 print cgRatio("ATGGCGCATTAA")
将产生所需的结果。
我见过一些解决方案,例如采用 dna.charAt(i)
并将其转换回字符串或在函数开头实例化新的 char
对象以进行比较。对于如此简单的任务,这似乎过于复杂。 Python 是在这个任务中更胜一筹,还是在 Java 中有更有效的方法来解决这个问题?
简单的 java 代码为:
for (int i = 0; i < dna.length(); i++) {
char c = dna.charAt(i);
if (c == 'C' || c == 'G') {
count++;
}
}
return (double)count / dna.length();
绝对没有理由将字符转换为 "string" 以进行比较!
如果您正在寻找 "less" 代码解决方案,您可以使用 "for each" 风格:
for (char c : dna.toCharArray()) {
易于理解,易于阅读,但需要创建 new char array。