大家好,我正在尝试读取基因组序列并搜索出现的任何 10 个字符重复。我想到的解决方案分为三个步骤:
- 读取基因组序列,例如:GAAAAATTTTCCCCCACCCTTTTCCCC
- 将字符串切成十个连续的序列,例如第一个新生成的字符串是索引 0-9,下一个是 1-10,2-11,3-12...
- 将这些序列存储在 ArrayList 中
- 比较字符串
- 返回重复的序列以及它们重复的频率。
我遇到的麻烦是如何从旧的和更大的字符串生成一个新的字符串。假设我的基因组序列是 AAAAGGGGGAAAATTTCCCC,那么我的前十个字符序列将是 AAAAGGGGGA,下一个将是 AAAGGGGGAA。我将如何在java中做到这一点?
这是我到目前为止所拥有的:
import java.util.List;
import java.util.ArrayList;
public class Solution
{
public ArrayList<String> findRepeatedDnaSequences(String s)
{
ArrayList<String> sequence = new ArrayList<String>();
int matches;
ArrayList<String> matchedSequence = new ArrayList<String>();
for(int i = 0; i < s.length(); i++)
{
if (i + 9 > s.length())
{
sequence.add(s.substring(i, i + 9));
}
}
for(int i = 0; i < sequence.size(); i++)
{
matches = 0;
for (int j = 1; j < sequence.size(); j++)
{
if(sequence.get(i) == sequence.get(i))
{
matches++;
System.out.print(matches);
matchedSequence.add(sequence.get(i));
}
}
}
return matchedSequence;
}
}