题目链接:http://codeforces.com/contest/1005/problem/B
题意是给你两个字符串,对两个字符串进行删除操作,只能从最左端一个一个删,然后问一共需要删多少个能使两个字符串相同。
【Codeforces Round #496 (Div. 3) B.Delete from the Left(思维)】思路就是因为删除操作是从最左端开始删除的,所以我们倒着比较,如果两个字符串的最右端的字符不相等的话,那么就只能将两个字符串全部都删除才符合操作。如果从最右端开始,两个字符串的字符相等,就让l--,r--,直到不相等为止,那么剩下的l+r的长度就是需要删除的字符的次数,因为字符串是从0开始的,所以最后需要+2。
AC代码:
#include
using namespace std;
string str,ch;
int main()
{
cin>>str>>ch;
int l1 = str.length();
int l2 = ch.length();
int l = l1-1,r=l2-1;
if(str[l] != ch[r]){
cout<= 0 && l >= 0){
if(str[l] == ch[r]){
l--;
r--;
}
else{
break;
}
}
cout<
推荐阅读
- codeforces B. Young Explorers
- codeforces C. Mere Array
- codeforces D. Omkar and Bed Wars
- codeforces C. Omkar and Waterslide
- codeforces B. Omkar and Infinity Clock
- codeforces B. Ternary Sequence
- 题库-CF|【Codeforces Round 370 (Div 2) E】【线段树 等比数列 区间合并】Memory and Casinos 赌场区间[l,r] l进r先出的概率
- 题库-CF|【Codeforces Round 263 (Div 2)C】【贪心 哈弗曼思维】Appleman and Toastman 每个非1size子树延展为2子树的最大权
- Codeforces|Codeforces Round #605 (Div. 3) D. Remove One Element
- Codeforces|Codeforces Round #643 (Div. 2) B.Young Explorers