CodeForces - 1025C 字符串处理,画一个圆。。。
题目链接:
https://vjudge.net/problem/1810469/origin
题目大意:
给你一个字符串,中间切一刀,左右两边均反转,然后右边的串拼接到左边上。
思路:
比如 aabb | cc --> ccbbaa, 这是一个反转的例子
如果 aabbcc| -> aabbcc, |aabbcc -> ccbbaa 考虑极端情况,知道,这相当于一个环!
于是就有做出一个重复字符串的思路,遍历一遍就可以了。
下面是AC代码:
#include <iostream>
#include <cstdio>
#include <string.h> using namespace std;
const int MX = 2e5+;
char s[MX]; int main()
{
int ans = -;
int cnt = , j;
scanf("%s", s+);
int n = strlen(s+);
for(int i = ; i <= n; ++i) s[n+i] = s[i];
for(int i = ; i <= *n; i = j) // 注意i = j跳步
{
cnt = ;
for(j = i+; j <= *n; ++j)
{
if(s[j-] != s[j]) cnt++; //若不同则串长度加一!
else break; //相同则停止
}
ans = max(ans, cnt);
}
ans = min(ans, n); //这句话一定要加。。,可能大于n!
printf("%d\n", ans);
}
上面的代码用了两个for循环,并且优化了一下,一个学长的代码一个for循环就可以了,而且不用再弄一个数组:
#include <iostream>
#include <cstdio>
#include <string.h> using namespace std;
const int MX = 1e5+;
char s[MX]; int main()
{
int ans = -;
int cnt = ;
scanf("%s", s); // 如果用s+1则会在后面的串里多一个空格!所以出错
int n = strlen(s);
for(int i = ; i < *n; ++i)
{
if(s[i%n] != s[(i-)%n]) cnt++; // s+1的时候会导致出错!
else
{
ans = max(ans, cnt);
cnt = ;
}
ans = max(ans, cnt);
}
ans = min(ans, n);
printf("%d\n", ans);
}
注意!用取模运算代替循环数组下标最好从0开始!!!
如有疑问,欢迎评论指出!
CodeForces - 1025C 字符串处理,画一个圆。。。的更多相关文章
- PostScript的简单例子-用粗线画一个圆
一 近期需要用到PostScript,查询资料学习PS的语法 简单的画一个圆的例子 %!PS-Adobe-3.0 /inch{72 mul} def 4.25 inch 5.5 inch 1.5 in ...
- 看opengl 写代码(4) 画一个圆
opengl 编程指南 P30 以下代码 是 用 直线 连起来 画一个圆. // circle.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" ...
- zrender源码分析--初探如何画一个圆
今天是想看看使用zrender框架如何去,画一个圆,再加“circle”的文字在圆心. 然后开始代码: 如何部署代码,让zrender跑起来这边就不说了,官方例子就有写,地址是:https://git ...
- SDL系列之 - 用SDL动态地画一个圆喽 && 设置背景色
#include <SDL.h> #include <stdlib.h> #include <string.h> #include <math.h> # ...
- matlab-画一个圆
我们可以用 李萨如图形 的思路去画一个圆,或者一个椭圆. x,y是圆心所在坐标,r是半径,nseg是边缘段数(越高,边缘越顺滑,建议100以上),S是plot的样式设置字符 function Draw ...
- 利用canvas画一个实时时钟
先放一张效果图: 下面是源代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"& ...
- Canvas 如何画一个四分之一圆
转: Canvas 如何画一个四分之一圆 HTML: Document JS: var c = document.getElementById('ctx') var ctx = c.getContex ...
- 使用H5 canvas画一个坦克
具体步骤如下: 1. 首先做出绘图区,作为坦克的战场 <canvas id="floor" width="800px" height=&quo ...
- canvas游戏小试:画一个按方向键移动的圆点
canvas游戏小试:画一个按方向键移动的圆点 自己对canvas,但又有一颗做游戏的心TT.然后记录一下对canvas的学习吧,用一个按方向键控制的小圆点来做练习.(编程时用了一些es6的语法) ...
随机推荐
- 如何确定Kafka的分区数、key和consumer线程数
[原创]如何确定Kafka的分区数.key和consumer线程数 在Kafak中国社区的qq群中,这个问题被提及的比例是相当高的,这也是Kafka用户最常碰到的问题之一.本文结合Kafka源码试 ...
- LVM备份(3)- pg_dumpall
- Aerospike-内存和硬盘混合存储的kv数据库
为什么会有Aerospike? Redis是一个纯内存型数据库,性能上没有多大问题. 但这又带来一个新问题,内存是很贵的,所以全内存的存储成本非常昂贵.为了节省成本,我们需要把一部分不经常用到的数据存 ...
- 第五节: EF高级属性(一) 之 本地缓存、立即加载、延迟加载(不含导航属性)
一. 本地缓存 从这个章节开始,介绍一下EF的一些高级特性,这里介绍的首先介绍的EF的本地缓存,在前面的“EF增删改”章节中介绍过该特性(SaveChanges一次性会作用于本地缓存中所有的状态的变化 ...
- IScroll某些手机下不触发ScrollEnd问题处理
同样是微信7.0,看起来内核都是x5内核,两款不同的手机,一个有问题,一个没有问题. IScroll在问题手机下会出现快速拨动时候不触发ScrollEnd事件现象,轻点一次才会触发,解决办法 docu ...
- sublime 浏览器快捷键设置
之前每次忘掉在哪打开,这次认真记一下 菜单栏Preferences-->Package Settings-->Side Bar-->Key Binding-Users [ // ch ...
- Pytorch中的自动求导函数backward()所需参数含义
摘要:一个神经网络有N个样本,经过这个网络把N个样本分为M类,那么此时backward参数的维度应该是[N X M] 正常来说backward()函数是要传入参数的,一直没弄明白backward需要传 ...
- Why Random Initialization in Neural Network?
- pytorch对可变长度序列的处理
主要是用函数torch.nn.utils.rnn.PackedSequence()和torch.nn.utils.rnn.pack_padded_sequence()以及torch.nn.utils. ...
- Sql 四大排名函数(ROW_NUMBER、RANK、DENSE_RANK、NTILE)简介
排名函数是Sql Server2005新增的功能,下面简单介绍一下他们各自的用法和区别.我们新建一张Order表并添加一些初始数据方便我们查看效果. CREATE TABLE [dbo].[Order ...