将 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