CF1506C Double-ended Strings(差不多就是找最长串问题)

简介: CF1506C Double-ended Strings(差不多就是找最长串问题)

题目描述



You are given the strings aa and bb , consisting of lowercase Latin letters. You can do any number of the following operations in any order:


  • if |a| > 0∣a∣>0 (the length of the string aa is greater than zero), delete the first character of the string aa , that is, replace aa with a_2 a_3 \ldots a_na2a3…an ;
  • if |a| > 0∣a∣>0 , delete the last character of the string aa , that is, replace aa with a_1 a_2 \ldots a_{n-1}a1a2…an−1 ;
  • if |b| > 0∣b∣>0 (the length of the string bb is greater than zero), delete the first character of the string bb , that is, replace bb with b_2 b_3 \ldots b_nb2b3…bn ;
  • if |b| > 0∣b∣>0 , delete the last character of the string bb , that is, replace bb with b_1 b_2 \ldots b_{n-1}b1b2…bn−1 .


Note that after each of the operations, the string aa or bb may become empty.


For example, if a=a= "hello" and b=b= "icpc", then you can apply the following sequence of operations:


  • delete the first character of the string aa \Rightarrow⇒ a=a= "ello" and b=b= "icpc";
  • delete the first character of the string bb \Rightarrow⇒ a=a= "ello" and b=b= "cpc";
  • delete the first character of the string bb \Rightarrow⇒ a=a= "ello" and b=b= "pc";
  • delete the last character of the string aa \Rightarrow⇒ a=a= "ell" and b=b= "pc";
  • delete the last character of the string bb \Rightarrow⇒ a=a= "ell" and b=b= "p".


For the given strings aa and bb , find the minimum number of operations for which you can make the strings aa and bb equal. Note that empty strings are also equal.


输入格式



The first line contains a single integer tt ( 1 \le t \le 1001≤t≤100 ). Then tt test cases follow.


The first line of each test case contains the string aa ( 1 \le |a| \le 201≤∣a∣≤20 ), consisting of lowercase Latin letters.


The second line of each test case contains the string bb ( 1 \le |b| \le 201≤∣b∣≤20 ), consisting of lowercase Latin letters.


输出格式



For each test case, output the minimum number of operations that can make the strings aa and bb equal.


题意翻译



你有两个字符串  a,b,你可以对这个字符串进行下面的操作:


  • 如果 a  非空,删除 a 的第一个字符。
  • 如果 a  非空,删除 a  的最后一个字符。
  • 如果 b  非空,删除  b 的第一个字符。
  • 如果 b  非空,删除 b  的最后一个字符。


求至少需要多少次操作使 a  和 b  完全相同。注意,我们认为两个空串也是完全相同的。


T  组数据。


输入输出样例



输入

5

a

a

abcd

bc

hello

codeforces

hello

helo

dhjakjsnasjhfksafasd

adjsnasjhfksvdafdser


输出  

0

2

13

3

20


题意分析;首先我们可以分析知道;我们要找一个二个串的公共最长串,然后我们把2个串的长度加起来减去公共最长串就是我们要的操作次数。具体操作看代码。


#include <bits/stdc++.h>
using namespace std;
void solve() 
{
  string a, b;
  cin >> a >> b;
  int maxk = 0;
  for (int i=0; i<a.size(); i++) 
  {
    for (int j=0; j<b.size(); j++) 
    {
      int k = 0;
      while (i+k < a.size() && j+k < b.size() && a[i+k] == b[j+k])k++;
      if (k > maxk) maxk = k;
    }
  }
  cout << a.size() + b.size() -2*maxk << endl;
}
int main() 
{
  int T;
  cin >> T;
  for (int i=1; i<=T; i++)solve();
}
相关文章
|
关系型数据库 PostgreSQL
PostgreSQL 计算字符串字符数函数(CHAR_LENGTH(str))和字符串长度函数(LENGTH(str))
PostgreSQL 计算字符串字符数函数(CHAR_LENGTH(str))和字符串长度函数(LENGTH(str))
1466 0
|
10月前
CF443A Anton and Letters(去重set函数)
CF443A Anton and Letters(去重set函数)
28 0
|
2月前
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
从接口获取获取到数组arr=[‘1‘,‘a‘,‘2‘,‘b‘,‘3‘,‘c‘]转换成{number:‘123’,char:‘abc’}
|
10月前
|
数据库管理
CF1547B Alphabetical Strings(了解字符串的的一些规律)
CF1547B Alphabetical Strings(了解字符串的的一些规律)
63 0
|
10月前
|
机器学习/深度学习
CF1552A Subsequence Permutation(string排序大法)
CF1552A Subsequence Permutation(string排序大法)
27 0
|
10月前
|
机器学习/深度学习
CF71A Way Too Long Words(string简单模拟)
CF71A Way Too Long Words(string简单模拟)
42 0
LeetCode contest 190 5417. 定长子串中元音的最大数目 Maximum Number of Vowels in a Substring of Given Length
LeetCode contest 190 5417. 定长子串中元音的最大数目 Maximum Number of Vowels in a Substring of Given Length
|
人工智能 算法
LeetCode 1347. 制造字母异位词的最小步骤数 Minimum Number of Steps to Make Two Strings Anagram
LeetCode 1347. 制造字母异位词的最小步骤数 Minimum Number of Steps to Make Two Strings Anagram
Sting str = "aaaa" 的形式定义一个字符串最大长度只能有 65534 个。
String对象最多能容纳字符 最长的长度为 2^32,也就是4G。 不过,我们在编写源代码的时候,如果使用 Sting str = "aaaa";的形式定义一个字符串,那么双引号里面的ASCII字符最多只能有 65534 个。
1223 0