题目描述:
请从字符串中提取以最后一个[img]开头、以最后一个[\img]结尾的字符串,未找到匹配的字符串返回"null"。
输入描述:
可能包含[img][\img]的字符串
输出描述:
截取后的字符串
输入样例1:
bbb[img]ccc[img]ddd[\img]eee[\img]
输出样例1:
[img]ddd[\img]eee[\img]
输入样例2:
abc
输出样例2:
null
解题思路:
先找出最后一个[img]的'['所在下标i和最后一个[\img]的']'所在下标j,最后一个[img]的'['所在下标i一定要小于最后一个[\img]的']'所在下标j才能截取子字符串进行输出(要是i>j就输出"null"),然后从i开始截取(j-i+1)个长度的子字符串进行输出即可。
AC代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str;
while(getline(cin,str))
{
int len = str.length();
int i = str.rfind("[img]",len-1); //最后一个[img]的'['所在下标
int j = str.rfind("[\\img]",len-1) + 5; //最后一个[\img]的']'所在下标
if(i < j) // 可能出现\img前面没有img的情况
{
cout << str.substr(i,j-i+1) << endl; //从第一个[img]开始截取(j-i+1)个长度的子字符串
}
else
{
cout << "null" << endl;
}
}
return 0;
}