标签:高效 substr 字符串 hat ring return subject ase public
对于两个字符串A,B。请设计一个高效算法,找到B在A中第一次出现的起始位置。若B未在A中出现,则返回-1。
给定两个字符串A和B,及它们的长度lena和lenb,请返回题目所求的答案。
"acbc",4,"bc",2
返回:2
class StringPattern { public: int findAppearance(string A, int lena, string B, int lenb) { // write code here if(lena<lenb) return -1; int count=0; for(int i=0;i<lena-lenb+1;i++) if(A[i]==B[0]) { if(A.substr(A[i],lenb)==B) { return i; break; } } return -1; } };
段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起
terminate called after throwing an instance of ‘std::out_of_range‘
what(): basic_string::substr
class StringPattern { public: int findAppearance(string A, int lena, string B, int lenb) { // write code here return A.find(B); } };
class StringPattern { public: int findAppearance(string A, int lena, string B, int lenb) { // write code here for(int i=0; i<=lena-lenb; i++) { int j = 0; for(; j<lenb; j++) { if(A[i+j] != B[j]) break; } if(j == lenb) return i; } return -1; } };
标签:高效 substr 字符串 hat ring return subject ase public
原文地址:http://www.cnblogs.com/dd2hm/p/7259957.html