0
我有一個程序,它接受DNA字符串的文本文件,將它們分成kmer子字符串並計算唯一子字符串彈出多少次。我唯一的問題是有它識別字符串值「N」,並在文件中忽略它...例如文本文件,像這樣:如何忽略無序地圖/地圖中的單個字符串值?
ACNTG
ACTG
ACTG
會將dna序列拆分爲3個kmers,因此是第一個整數。問題是我想忽略N並繼續前進,而不包括唯一字符串值中的N。所以輸出將是...
ACT,CTG,TGA ...等等,而忽略N值。這裏要說的是,我相信那部分應該納入我的代碼部分:
#include <fstream>
#include <iostream>
#include <string>
#include <unordered_map>
std::string kmer = "";
std::unordered_map<std::string, int > dna;
for(int i = 0; i< s.length() ; ++i){
int z= 0;
kmer = s.substr(z,k);
++z;
if (kmer.length() != k){
break;
}
//DONT UNDERSTAND WHY THIS WOULDNT WORK
if(!dna.find("N")) !=std::string::npos)){
dna[kmer]++;
}
}
for (std::unordered_map<std::string,int>::iterator it=dna.begin(); it!=dna.end(); ++it){
std::cout << it->first << " " << it->second << std::endl;
}
f.close();
return 0;
}
你是怎麼設法解析條件中第一個'!'的? :D +1 它讓我很困惑。此外,這些字符串是乞求一些用戶定義的散列 – Ap31
@ Ap31我剛剛得到了你所提出的觀點。謝謝!直到你提出它,我只是沒有看到它。短視有時會帶來回報:-) –
好吧,你仍然能夠給出正確的答案,而我甚至不知道這個表達式應該是什麼意思。我不得不說,雖然括號仍不能完全補充你的當前解決方案:D – Ap31