C String problem

链接:登录—专业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.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值