substr复制子字符串:
先讲一下substr的用法:字符串.substr(a,b)
前面一定要加上是哪个字符串。
a指的是从第几个字符开始,当然字符串是从零开始数的。
b指的是从第a开始到后面数几个结束,即b代表的数量。
百度含义:substr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。如果没有指定长度_Count或_Count+_Off超出了源字符串的长度,则子字符串将延续到源字符串的结尾。
原先做这道题用的是队列,不过也是过了,但就是有些麻烦(大体讲一下思路,就是用一个for循环,从第一个字符串的第一个字母开始找,如果跟第二个字符串相应的字符相等,就push进队列,并标记,如果遇到不相等,则将队列pop。。。中间还有很多细节,就不说了,很繁琐,不建议尝试,还是好好学习substr吧)。
下面请瞻仰大佬的代码,简直是又对又短。
#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <cmath>
using namespace std;
int main ()
{
string a,b;
while (cin >> a >> b)
{
int len1=a.length();
int len2=b.length();
int len=min(len1,len2);
for(int i=len;i>=1;i--)
{
if(a.substr(len1-i,i)==b.substr(0,i))
{
cout << b.substr(0,i) << endl;
break;
}
else if(i==1)
{
cout << "\"NULL!\"" << endl;
}
}
}
return 0;
}


京公网安备 11010502036488号