链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
题目描述
在 Hammer 水群时无意了解到了一个新的字符串问题:
Hammer 花了一天时间,明白了这个问题是指:至少修改多少字符,才能使 3 个长度为 k 的字符串完全相同。
请你帮 Hammer 解决这个问题。
输入描述:
第一行输入一个正整数 k (1≤k≤105)k\,( 1 \le k\le 10^5)k(1≤k≤105) ,表示字符串长度。
接下来三行,每行输入一个长度为 k 的字符串,仅由小写字母组成。
输出描述:
输出一行一个整数,表示答案。
示例1
输入
2 ab ab ba
输出
2
说明
可以将第三个字符串修改为 "ab" ,只需修改 2 个字符。
示例2
输入
3 abc cbb aba
输出
3
说明
将所有字符串修改为 "abb" ,需要修改 3 个字符。也可以将所有字符串修改为 "abc" ,同样需要修改 3 个字符。
示例3
输入
1 z z z
输出
0
说明
无需进行修改,三个字符串就已经相同。
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main(void)
{
int k;cin>>k;
string s,ss,sss;
cin>>s>>ss>>sss;
int all=0;
for(int i=0;i<k;i++)
{
if(s[i]!=ss[i]&&(s[i]==sss[i]||sss[i]==ss[i]))
all++;
else if(s[i]!=sss[i]&&(s[i]==ss[i]||ss[i]==sss[i]))
all++;
else if(sss[i]!=ss[i]&&(s[i]==ss[i]||sss[i]==s[i]))
all++;
else if(sss[i]!=ss[i]&&sss[i]!=s[i]&&s[i]!=ss[i])
all+=2;
}
cout<<all;
return 0;
}
利用循环中判断所有可能出现的情况,当3个字符串的字符均不相同时,需要修改其中两个字符使其与另外一个字符相同,即all+2.