题目链接:

https://nanti.jisuanke.com/t/40449

题目大意:给出两个长度相同的不同字符串A, B.可以对A的任意长度区间进行一次翻转,问有多少种方法可以使得翻转后两字符串相同。

思路:

1.一开始我是利用string以及algorithm头文件里的reverse()来做的,毫无疑问超时了。其实我知道这种题目一定是有什么特定的算法或者思路。很可惜第一次遇到我不会。

2.正解是找到A,B两串第一个不相等字符的左边界以及右边界,将A字符串中这区间翻转后进行判断是否A,B相等,若不相等答案为0。若相等,那么答案更新为1,然后在A串左边界向左,右边界向右,判断是否字符相等,相等的话ans++,不等的话break出答案。

代码如下:

 #include<stdio.h>
#include<string.h>
const int MAXN = 1e5 + ; char s1[MAXN], s2[MAXN], temp[MAXN];
int left, right; int main()
{
int ans = ;
scanf("%s%s", s1, s2);
int len = strlen(s1);
for(int i = ; i < len; i ++)
if(s1[i] != s2[i])
{
left = i;
break;
}
for(int i = len - ; i >= ; i --) if(s1[i] != s2[i])
{
right = i;
break;
}
if(left == right)
printf("0\n");
else
{
strcpy(temp, s1);
int r = right;
for(int i = left; i <= right; i ++)
{
s1[i] = temp[r];
r --;
}
if(strcmp(s1, s2) != )
printf("0\n");
else
{
ans ++;
left --, right ++;
while(left >= && right < len)
{
if(s1[left] == s1[right])
{
ans ++;
left --;
right ++;
}
else
break;
}
printf("%d\n", ans);
}
}
return ;
}

Orderly Class的更多相关文章

  1. LeetCode 899. Orderly Queue

    899. Orderly Queue(有序队列) 题目: 给出了一个由小写字母组成的字符串 S.然后,我们可以进行任意次数的移动. 在每次移动中,我们选择前 K 个字母中的一个(从左侧开始),将其从原 ...

  2. [Swift]LeetCode899. 有序队列 | Orderly Queue

    A string S of lowercase letters is given.  Then, we may make any number of moves. In each move, we c ...

  3. 899. Orderly Queue

    A string S of lowercase letters is given.  Then, we may make any number of moves. In each move, we c ...

  4. [LeetCode] 899. Orderly Queue 有序队列

    A string S of lowercase letters is given.  Then, we may make any number of moves. In each move, we c ...

  5. 2017 Mid Central Regional F.Orderly Class(大水题)

    这两天刷了两道过去的原题,看看思维还是8太行. 这道题问给出两个字符串,要求只翻转一次,问有几种不同的方法使得a串变成b串 我一开始没看到只翻转一次,还以为是个计数 + 字符串dp大难题,心想当年的学 ...

  6. 【LeetCode】899. Orderly Queue 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 题目地址: https://leetcode.com/problems/orderly- ...

  7. 多线程爬坑之路-Thread和Runable源码解析

    多线程:(百度百科借一波定义) 多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提 ...

  8. Android HandlerThread 总结使用

    转载请标明出处:http://www.cnblogs.com/zhaoyanjun/p/6062880.html 本文出自[赵彦军的博客] 前言 以前我在 [Android Handler.Loop ...

  9. 分布式开放消息系统(RocketMQ)的原理与实践

    分布式消息系统作为实现分布式系统可扩展.可伸缩性的关键组件,需要具有高吞吐量.高可用等特点.而谈到消息系统的设计,就回避不了两个问题: 消息的顺序问题 消息的重复问题 RocketMQ作为阿里开源的一 ...

随机推荐

  1. 项目:JS实现简易计算器案例

    组件化网页开发下的: 步骤一:让页面动起来的JavaScript深入讲解  的 项目:JS实现简易计算器案例

  2. python--第五天练习题

    # 1.按alist中元素的age由大到小排序 alist = [{'name': 'a', 'age': 20}, {'name': 'b', 'age': 30}, {'name': 'v', ' ...

  3. BZOJ 1420 Discrete Root

    思路:数学大汇总 提交:\(3\)次 错因:有一个\(j\)写成\(i\) 题解: 求:\(x^k \equiv a \mod p\) 我们先转化一下:求出\(p\)的原根\(g\) 然后我们用\(B ...

  4. electron 打包成桌面运用

    最近在学习nodejs,得知Electron是通过将Chromium和Node.js合并到同一个运行时环境中,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一门技术.对于之前一直从 ...

  5. 029_检测 MySQL 数据库连接数量

    #!/bin/bash#本脚本每 2 秒检测一次 MySQL 并发连接数,可以将本脚本设置为开机启动脚本,或在特定时间段执行#以满足对 MySQL 数据库的监控需求,查看 MySQL 连接是否正常#本 ...

  6. Codeforces 1180E Serge and Dining Room

    题意: 有\(n\)个菜肴,有\(m\)个小朋友,每个菜肴的价格为\(a_i\),每个小朋友有\(b_i\)元钱,小朋友从\(1 \rightarrow m\)依次购买菜肴,当第\(i\)个小朋友轮到 ...

  7. sync、fsync和fdatasync

    转自 http://blog.csdn.net/todd911/article/details/11701847 传统的UNIX实现在内核中设有缓冲区高速缓存或页面高速缓存,大多数磁盘 I/O都通过缓 ...

  8. 软件构造实验二-拷贝一个c文件 将其中的关键字int替换成float

    1,新建 Parser Generator 点击project --> new 2,填写工程名字 随意取一个名字 点击OK 3,点击Project选项下的 parserwizard 分析器向导选 ...

  9. CF1206A

    CF1206A 题意: 给你 $ a , b $ 两个数组,要求从两个数组中各选一个数,使得它们的和不存在于任何一个数组. 解法: 一道极端签到的题. 因为是要构建一个不存于两个数组的数,所以直接将两 ...

  10. Ubuntu常用命令及git常用命令

    1. CMakeLists.txt中指定OpenCV路径 set(OPENCV_DIR /***/***/opencv-2.4.9) 2. cmake工程编译安装 mkdir build cd bui ...