Codeforces 1006D. Two Strings Swaps(思维)

 

题目链接:http://codeforces.com/contest/1006/problem/D

       题意是给了两个字符串a和b,然后可以对这两个字符串有三种操作来使这两个字符串相等,一是交换a[i]和b[i],二是交换a[i]和a[n-i+1],三是交换b[i]和b[n-i+1],这三个操作都是不计步数的,然后问最少还需要多少步可以让a串等于b串。

       思路就是模拟,依次判断上述三种情况能不能进行操作,然后加上对应的步数就好了,最后如果是奇数的长度的话还要判断一下中间的字符是否相同。 


AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int len;
string a,b;

int main()
{
  cin>>len>>a>>b;
  int ans = 0;
  for(int i=0;i<len/2;i++){
    int l = i, r = len - i - 1;
    if(a[l] == b[l] && a[r] == b[r] || a[l] == b[r] && a[r] == b[l] || a[l] == a[r] && b[l] == b[r])
      continue;
    else if(a[l] == b[l] || a[r] == b[r] || a[l] == b[r] || a[r] == b[l] || b[l] == b[r])
      ans++;
    else
      ans += 2;
  }
  if(len % 2 == 1 && a[len/2] != b[len/2])ans++;
  cout<<ans<<endl;
  return 0;
}

 

全部评论

相关推荐

10-20 15:26
门头沟学院 Java
桥头牛油火锅:这个比例不正常,简历的话项目经历放中间,项目功能分点可以再明确点,前面加“·”或者“1 2 3”,另外简历上的照片可以去外面摄影店拍一下,以后也会用到的,hr筛人也是多少会看的,毕竟世界是一个巨大的卡颜局嘛,还有有些hr由于消息太多可能没看到,后面可能会回来找你,要简历的还会多一点,我也是普2本,比例大致是600:90:15:3,当然我实力不太够,拿的offer比较少,慢慢来吧
点赞 评论 收藏
分享
Java面试先知:我也是和你一样的情况,hr 说等开奖就行了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务