C++不呼叫string實現字串中子串重複次數統計
阿新 • • 發佈:2020-12-23
提要
C++標準庫中封裝了很好用的string型別,可以輕鬆通過find查詢子串。
這裡給出一種純粹使用char*的子串統計實現
實現
巢狀遍歷母串和子串進行逐個比對,核心是計數器自增的時機
#include<iostream> int match(const char* main,const char* sub) { int count = 0; for(int i=0;main[i]!='\0';i++) { for(int j=0;sub[j]!='\0';j++) { if(main[i+j]!=sub[j]){break;} if(sub[j+1]=='\0'){count++;} //core } } return count; } int main(int argc, char const *argv[]) { char *main="ABCBCDEEEF"; char *sub="EE"; std::cout<<match(main,sub)<<std::endl; return 0; } //result = 2
附加
另附使用C++標準庫string的簡潔實現
#include<iostream> #include<string> int match(const std::string& main,const std::string& sub) { int count = 0; int index = 0; while((index=main.find(sub,index))<main.length()) { count++; index++; } return count; } int main(int argc, char const *argv[]) { std::string main="ABCBCDEEEF"; std::string sub="EE"; std::cout<<match(main,sub)<<std::endl; return 0; }