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的语法) ...
 
随机推荐
- redis的主从模式搭建及注意事项
			
前言:本文先分享下如何搭建redis的主从模式配置,以及主从模式配置的注意事项.后续会继续分享如何实现一个高可用的redis服务,redis的Sentinel 哨兵模式及集群搭建. 安装: 1,yum ...
 - 「LibreOJ NOI Round #1」验题
			
麻烦的动态DP写了2天 简化题意:给树,求比给定独立集字典序大k的独立集是哪一个 主要思路: k排名都是类似二分的按位确定过程. 字典序比较本质是LCP下一位,故枚举LCP,看多出来了多少个独立集,然 ...
 - Springboot 6.Springboot 返回cookies信息的验证和post接口开发及常见错误解决
			
在介绍之前先将一个小插件:lombok ,在prefrence里面点击plugins,然后搜索lombok,进行install就可以了 首先将pom文件里面的lombok引进来 <depend ...
 - 解决js复制在安卓和ios兼容问题
			
var clipboard = new ClipboardJS('.fr', { // target: function() { // return document.querySelector('d ...
 - Web请求相关
			
HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...
 - Python变量命名规范
			
模块名: 小写字母,单词之间用_分割 ad_stats.py 包名: 和模块名一样 类名: 单词首字母大写 AdStats ConfigUtil 全局变量名(类变量,在java中相当于static变量 ...
 - IP地址转为二进制,去掉0b补齐八位拼接,再转为十进制
			
#!/usr/bin/env python# -*- coding:utf-8 -*- ip = '192.168.0.1' # 转为二进制:# 方法一'''eve = ip.split('.')s ...
 - JavaScript Date日期对象以及日期格式化方法
			
前言 Date对象是javascript语言中内置的数据类型,用于提供日期和时间的操作接口.Date对象是在早期java中的java.util.Date类基础上创建的,为此,Date类型使用自UTC1 ...
 - div的默认position值是静态的static
			
div的默认position值是静态的static,如果相对父元素使用Position:absolute的话,需要手动在父元素上添加Position.
 - NSE: known a priori estimate
			
1. Leray-Hopf $u\in L^\infty(0,T;L^2(\bbR^3))\cap L^2(0,T;H^1(\bbR^3))$. See [Leray, Jean. Sur le mo ...