我正在處理項目,我必須解析文本文件並將字符串劃分爲用戶指定長度的子字符串。然後我需要檢測結果中的重複項。檢測使用滑動窗口概念生成的文件中的重複項
所以原來的文件應該是這樣的:在文件
ORIGIN
1 gatccaccca tctcggtctc ccaaagtgct aggattgcag gcctgagcca ccgcgcccag
61 ctgccttgtg cttttaatcc cagcactttc agaggccaag gcaggcgatc agctgaggtc
121 aggagttcaa gaccagcctg gccaacatgg tgaaacccca tctctaatac aaatacaaaa
181 aaaaaacaaa aaacgttagc caggaatgag gcccggtgct tgtaatccta aggaaggaga
241 ccaccactcc tcctgctgcc cttcccttcc ccacaccgct tccttagttt ataaaacagg
301 gaaaaaggga gaaagcaaaa agcttaaaaa aaaaaaaaaa cagaagtaag ataaatagct
我環路,併產生一個線串的,然後使用line.toCharArray()
在得到的線條滑動,並根據用戶規範劃分。因此,如果子字符串長度爲4的結果是這樣的:
GATC
ATCC
TCCA
CCAC
CACC
ACCC
CCCA
CCAT
CATC
ATCT
TCTC
CTCG
TCGG
CGGT
GGTC
GTCT
TCTC
CTCC
TCCC
CCCA
CCAA
這裏是我的分裂碼:
try {
scanner = new Scanner(toSplit);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
char[] chars = line.toCharArray();
for (int i = 0; i < chars.length - (k - 1); i++) {
String s = "";
for(int j = i; j < i + k; j++) {
s += chars[j];
}
if (!s.contains("N")) {
System.out.println(s);
}
}
}
}
我的問題是:給定輸入文件可以是巨大的,如何我可以檢測結果中的重複項嗎?
是否很重要的是,結果是在相同的順序輸入? –
是的,它是重要的 –
請注意,您可以將A,C,G,T編碼爲0,1,2,3的2位,對於長度爲4的子串,所有可能的組合給予4^4 == 256個可能性:您可以記住一個大小爲256的數組中的字符串的最後一個位置,並將輸出的碰撞作爲數組中的一系列塊替換爲有效位置 – BeyelerStudios