【整理】字符串串串

这篇博客主要介绍了字符串相关的算法题目,包括幸运序列的处理方法,强调在特定位置的循环条件,以及字符串Hash和KMP算法的应用。通过对样例的分析,展示了如何解决这些问题。
摘要由CSDN通过智能技术生成

还是只会做水题…………orz



【1】幸运序列

【问题描述】

Ly喜欢幸运数字,众所周知,幸运数字就是数字位上只有4和7的数字。
但是本题的幸运序列和幸运数字完全没关系,就是一个非常非常普通的序列。哈哈,是不是感觉被耍了,没错,你就是被耍了。
Ly现在手上有一个长度为N的幸运序列a,他想这样子折腾这个序列:
1.如果已经折腾了k次了,就结束,否则找到一个最小的i,使得(a[i]=’4’ && a[i+1]=’7’)  //0<i<N;
2.找不到这样的i就结束;
3.如果odd(i),令a[i+1]=a[i],否则令a[i]=a[i+1],继续第一步。
Ly想让你告诉他最后序列折腾成什么样子了。
需要注意的是,本题的序列从1开始编号

【输入文件】

第一行N,K;
第二行N个数描述序列a。

【输出文件】

N个数,输出最后的序列。

【输入样例】

7 4
4727447

【输出样例】

4427477

【数据规模和约定】

100%的数据中N<=100000,K<=1E9。


【分析】

其实只有在(4, 4, 7) 和 (4, 7, 7) 的位置会出现循环 而且第一一个数的位置还必须是奇数

然后就可以华丽丽地模拟了 = = 因为后面的不会对前面产生影响 所以顺序处理就行了


#include <cstdio>
#include <iostream>

using namespace std;

int read()
{
	int sign = 1, n = 0; char c = getchar();
	while(c < '0' || c > '9'){ if(c == '-') sign = -1; c = getchar(); }
	while(c >= '0' && c <= '9') { n = n*10 + c-'0'; c = getchar(); }
	return sign*n;
}

int N, K; 
int a[100005];

int m
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值