传送门:https://pintia.cn/problem-sets/994805046380707840/problems/1111914599408664577

这道字符串题,只是天梯赛L1的题,数据范围很小,一般就是暴力去做,但是要考虑将多个连续的6替换成其他的指定字符串,其实一开始的时候其实想不出来有什么比较好的思路可以去做。

感觉字符串题就是这样,明明没考啥东西,如果你基础够好,或者说有一些巧妙的方法的话,一下子就能解决,要不然你可能需要暴力写半天。

这道题后面想的思路是:找连续的6的话,我们肯定要知道这个连续的6的子串有多长,那么就可以联想到我们的最长上升子串问题,只不过这里是求一个所含有的字符都是6的子串的长度,并且是最长的“都是6子串”。

我们在最长上升子串中,如果第i个字符大于它前一个字符,dp【i】=dp【i-1】+1,否则dp【i】 = 1

A. 那在我们这个问题中,也可以这样,如果该字符不是6,则a【i】=0,如果是出现的第一个6,则a【i】=1,如果是连续出现的,那么就等于它前一个的值+1,即a【i】 = a【i-1】+1。

不过我们的问题在于,我们遇到这样一个子串的时候,是要得知它的长度的,要分小于3,在3和9中间,还有大于9三种情况来讨论。

怎么求这个的长度呢?上面A这句话的思路反过来就可以了,我们反向地对string s做一次遍历,做一次A的过程,然后在接下来正向遍历a数组的时候,在遇到这样的子串的第一个字符的位置的时候就可以立刻知道该子串有多长,然后直接不打印该子串,而是打印要替换的值,然后循环遍历i直接加上这个子串的长度,完美跳过该子串,继续打印下面该打印的字符。

题解代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn = 100005;
const int INF = 0x3f3f3f3f;
int k,N,mlen = INF;
string s;
int a[1005]; int main(){
#ifndef ONLINE_JUDGE
//freopen("in.txt","r",stdin);
#endif getline(cin,s);
int len = s.length();
memset(a,0,sizeof(a));
for(int i=len-1;i>=0;i--){
if(s[i] == '6' ){
if(i == len-1) a[i] = 1;
else if(s[i+1] == 0) a[i] = 1;
else a[i] = a[i+1]+1;
}
}
for(int i=0;i<len;){
if(a[i] > 9){
cout<<"27";
i += a[i];
}
else if(a[i] > 3){
cout<<"9";
i += a[i];
}
else {
cout<<s[i];
i++;
}
}cout<<endl;
return 0;
}

天梯赛 L1-058 6翻了的更多相关文章

  1. PTA 天梯赛 L1

    L1-002 打印沙漏 细节:就是在  (i>j&&i+j<r+1) 这个区间里才有空格,然后就是 for 循环   for(r=1; ;r+=2)  条件不满足之后还会再 ...

  2. 天梯赛L1 题解

    L1-001 Hello World (5 分) 这道超级简单的题目没有任何输入. 你只需要在一行中输出著名短句“Hello World!”就可以了. AC代码:(直接输出记性) #include & ...

  3. PAT L1 049 天梯赛座位分配

    天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位 ...

  4. 『ACM C++』 PTA 天梯赛练习集L1 | 052-053

    今日刷题,水题水题 ------------------------------------------------L1-052------------------------------------ ...

  5. 『ACM C++』 PTA 天梯赛练习集L1 | 048-49

    今日刷题048-049 ------------------------------------------------L1-048---------------------------------- ...

  6. 『ACM C++』 PTA 天梯赛练习集L1 | 040-41

    近期安排 校赛3.23天梯赛3.30华工校赛 4.21省赛 5.12 ------------------------------------------------L1-040----------- ...

  7. 『ACM C++』 PTA 天梯赛练习集L1 | 001-006

    应师兄要求,在打三月底天梯赛之前要把PTA上面的练习集刷完,所以后面的时间就献给PTA啦~ 后面每天刷的题都会把答案代码贡献出来,如果有好的思路想法也会分享一下~ 欢迎大佬提供更好的高效率算法鸭~ - ...

  8. 第四届CCCC团体程序设计天梯赛 后记

    一不小心又翻车了,第二次痛失200分 1.开局7分钟A了L2-3,一看榜已经有七个大兄弟排在前面了,翻车 * 1 2.把L1-3 A了18分,留了两分准备抢顽强拼搏奖,最后五秒钟把题过了,万万没想到还 ...

  9. 【CCCC天梯赛决赛】

    cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...

随机推荐

  1. 解决CentOS下service 功能 不能使用 bash: service: command not found

    首先检查自己是否 使用的是root用户 在centos系统中,如果/sbin目录下没有service这个命令,就会出现 bash: service: command not found 解决步骤如下: ...

  2. __sync_fetch_and_add函数(Redis源码学习)

    __sync_fetch_and_add函数(Redis源码学习) 在学习redis-3.0源码中的sds文件时,看到里面有如下的C代码,之前从未接触过,所以为了全面学习redis源码,追根溯源,学习 ...

  3. 17 shell break与continue

    使用 while.until.for.select 循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用 break 或者 continue 关键字. 在C语言.Python.Ja ...

  4. python自定义异常,使用raise引发异常

    1.自定义异常类,自定义的异常类必须是Exception或者Error的子类! 1 #!/usr/bin/env python 2 # encoding: utf-8 3 4 class Illega ...

  5. Java的反射机制一

    Java具有一定的动态性,我们可以利用反射机制,字节码操作来获得类似动态语言的特性. 动态操作对象,构造方法,属性,方法 Demo2 如何取得属性和方法以及构造器 public class Demo2 ...

  6. leetcode第156场周赛5207

    当时做的时候,一直理解想搞dp,后面可能思路有点乱了,写不出来... 看了评论区的大佬,才发现是滑动窗口的题目,学习到了. 思路分析: 1.这题可以转化成求数组最大子数组的和不超过maxCost的长度 ...

  7. 深入浅出图神经网络 第6章 GCN的性质 读书笔记

    第6章 GCN的性质 第5章最后讲到GCN结束的有些匆忙,作为GNN最经典的模型,其有很多性质需要我们去理解. 6.1 GCN与CNN的区别与联系 CNN卷积卷的是矩阵某个区域内的值,图卷积在空域视角 ...

  8. ESP8266相关知识笔记

    1.ESP8266 可以用来做串口透传,PWM 调控,远程控制开关:控制插座.开关.电器等.2.ESP8266有几种不同的使用方式,适用于不同水平的开发工作者. 使用AT指令进行操作:这是最常见的方式 ...

  9. Django基础005-Django开发的整体过程

    1.写views views.py代码块 1.在前端以/article/{{ article.id }}这种方式请求后台, 参数配置在urls.py中path('category/<int:id ...

  10. 何为“Secure Contexts”安全内容? 终于说明白了!

    ​​​何为"Secure Contexts"安全内容? 终于说明白了! 看图说话 [途径1]:地址栏输入: edge://flags/ 按需设置选项后,重启浏览器即可. Allow ...