时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
小Hi开发了一个新的替换函数replace2(index, c1, c2),功能是将一个字符串第index个字符至最后一个字符中的字符c1,全部替换成字符c2。
replace2函数很强大,对于任何长度相同的两个字符串S和D,都能通过调用若干次(不同参数的)replace2将S变成D。
给定S和D,请你帮助小Hi算出他至少调用几次replace2可以将S变成D。
输入
输入包含两行,依次是两个字符串S和D。
对于70%的数据,1 ≤ |S| = |D| ≤ 1000
对于100%的数据,1 ≤ |S| = |D| ≤ 100000 S和D只包含小写字母
输出
一个整数表示答案
aabbaa bbaacc样例输出
3
import java.util.*;
//80 超时版
public class Main {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String s = sc.next();
String t = sc.next();
int cnt = 0;
for(int i = 0; i < s.length(); i++){
char c1 = s.charAt(i);
char c2 = t.charAt(i);
if(c1 != c2){
s = s.substring(0, i) + s.substring(i).replace(c1, c2);
cnt++;
}
}
System.out.print(cnt);
sc.close();
}
}
#include <bits/stdc++.h>
using namespace std;
int main()
{
//freopen("in.txt", "r", stdin);
char s1[100002], s2[100002];
long long int ans = 0;
scanf("%s", s1);
scanf("%s", s2);
char c[26];
for (int i = 0; i < 26; i++)
c[i] = i;//字母次序
for (int i = 0; i < strlen(s1); i++)
{
int ch = c[s1[i] - 'a'];
if (ch != s2[i] - 'a')
{
ans++;
for (int j = 0; j < 26; j++)
{
if (c[j] == ch)
{
c[j] = s2[i] - 'a';
}
}
}
}
cout << ans << endl;
return 0;
}