1,for()拆分paragraph(4ms,87%;7.6MB,53%)
1 string mostCommonWord(string paragraph, vector<string>& banned) { 2 unordered_set<string>Sbanned; 3 for(string str:banned) 4 Sbanned.insert(str); 5 6 string str1; 7 string str2; 8 int max=0; 9 unordered_map<string,int>ins; 10 //注意最后一个单词直接截止了 11 for(char ch:paragraph){ 12 //字母返回非0值 13 if(isalpha(ch)) 14 //转为小写字母 15 str1+=tolower(ch); 16 17 else if(str1.size()>0){ 18 if(Sbanned.find(str1)==Sbanned.end()) 19 ++ins[str1]; 20 if(ins[str1]>max){ 21 max=ins[str1]; 22 str2=str1; 23 } 24 str1=""; 25 } 26 } 27 28 //为最后一个单词准备 29 if(str1.size()>0){ 30 if(Sbanned.find(str1)==Sbanned.end()) 31 ++ins[str1]; 32 if(ins[str1]>max){ 33 max=ins[str1]; 34 str2=str1; 35 } 36 str1=""; 37 } 38 return str2;
2,substr()截取paragraph(4ms,87%;7.6MB,53%)
1 string mostCommonWord(string paragraph, vector<string>& banned) { 2 unordered_set<string>Sbanned(banned.begin(),banned.end()); 3 //转为小写 4 for(char &ch:paragraph) 5 ch=tolower(ch); 6 7 int i=0; 8 int max=0; 9 string str1; 10 unordered_map<string,int>ins; 11 while(i<paragraph.size()){ 12 //字母返回非0 13 if(isalpha(paragraph[i])){ 14 int j=i; 15 i++; 16 while(i<paragraph.size()&&isalpha(paragraph[i])) i++; 17 //从j位开始截取i-j位 18 string str=paragraph.substr(j,i-j); 19 //计算str个数 20 if(Sbanned.count(str)==0) 21 ++ins[str]; 22 if(ins[str]>max){ 23 max=ins[str]; 24 str1=str; 25 } 26 } 27 i++; 28 } 29 return str1;
浙公网安备 33010602011771号