c++判断字符串s1s是否是S2的子串,是的话S1在S2的起始位置,返之返回-1到主程序
这个是函数开头:intString::substring(String&a)求大神帮忙,想了一天了...
这个是函数开头:int String::substring(String&a) 求大神帮忙,想了一天了
展开
1个回答
展开全部
暴力求解法就是从s2[0]开始到s2[s2.length()-s1.length()]为止,逐一作为子串起始位置和s1比较是否相同,相同则返回下标。
想要最低时间复杂度可以了解一下KMP算法。
想要最低时间复杂度可以了解一下KMP算法。
更多追问追答
追问
暴力求解法怎么求,,能写出来看看吗大哥
追答
int subString(const string &s1, const string &s2)
{
const size_t l1=s1.size();
const size_t l2=s2.size();
if(l1>l2) return -1;
for(size_t i=0;i<=l2-l1;++i)
{
size_t j;
for(j=0;j<l1&&s1[j]==s2[i+j];++j);
if(j==l1) return (int)i; //假设字符串长度不会超过int范围
}
return -1;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询