ALi-2020/3/27-1

题目:给定两个字符串S、T,保证0<|S|=|T|<100000;即长度相等,先输入S、后输入T,若S经过变换可以变为T,则输出对应的变换次数,若不行,则输出-1。变换是指把某个字母放到字符串的末尾。串由小写字母组成。

例子:

    输入:

    acdk

    ckad

    输出:

    2

说明:第一步把a提到末尾,第二步把d提到末尾。

思路: 是否可以变化为另一个串用桶排序,比较两个串a~z的数目是否相同,若相同则一定可以变换得到,若可以变换得到,则比较T串和S串,把其中排列顺序相同的数统计出来,最后用总长度减去这个数,就是往末尾移动的字母的个数。

#include 
#include 
#include 
#include 

using namespace std;

const int N = 26;
int ss[N];
int tt[N];
int i=0;
int j=0;
int flag = 0;
int cnt = 0;

int main(void)
{
    string s,t;
    cin >> s;
    cin >> t;

    for(i=0; i

 

你可能感兴趣的:(ALi)