FZU 2183 字符串处理
Problem Description
现在有一些被简单压缩的字符串,例如:a[120]代表120个a。对于字符串acb[3]d[5]e相对于acbbbddddde
现在给你两个字符串cString, nString.一个是被压缩过的字符串,另一个没有被压缩。
求nString是否为cString的子串,如果是输出True,否则输出False.cString的长度clen的范围是0<clen<1000, nString的长度的nlen的范围是0<nlen<1000;cString只包含小写26个字母,[],数字(大于0小于10^9)。nString只包含小写26个字母。
Sample Input
Sample Output
Source
FOJ有奖月赛-2015年03月
- #include <cstdio>
- #include <cmath>
- #include <cstring>
- #include <ctime>
- #include <iostream>
- #include <algorithm>
- #include <set>
- #include <vector>
- #include <queue>
- #include <typeinfo>
- #include <map>
- #include <stack>
- typedef long long ll;
- #define inf 0x7fffffff
- using namespace std;
- inline ll read()
- {
- ll x=,f=;
- char ch=getchar();
- while(ch<''||ch>'')
- {
- if(ch=='-')f=-;
- ch=getchar();
- }
- while(ch>=''&&ch<='')
- {
- x=x*+ch-'';
- ch=getchar();
- }
- return x*f;
- }
- //**************************************************************************************
- int main()
- {
- char a[];
- char b[];
- char aa[];
- char bb[];
- int bna[];
- int ana[];
- while(scanf("%s%s",a,b)!=EOF)
- {
- int l=strlen(b);
- int k=;
- int now=;
- bb[++k]=b[];
- bna[k]=;
- for(int i=; i<l; i++)
- {
- if(b[i]!=b[i-])
- {
- now=;
- bb[++k]=b[i];
- bna[k]=;
- }
- else
- {
- now++;
- bna[k]=now;
- }
- }
- int bk=k;
- k=;
- aa[k]='';
- int la=strlen(a);
- for(int i=; i<la; i++)
- {
- if(a[i]>='a'&&a[i]<='z')
- {
- aa[++k]=a[i];
- ana[k]=;
- }
- else if(a[i]=='[')
- {
- int sum=;
- i++;
- while(a[i]!=']')
- {
- sum*=;
- sum+=a[i]-'';
- i++;
- }
- ana[k]=sum;
- if(aa[k]==aa[k-])
- {
- // if(k==5)printf("%c %d\n",aa[k],ana[k]);
- ana[k-]+=ana[k];
- k--;
- }
- }
- }
- int ak=k;
- if(bk>ak)
- {
- printf("False\n");
- continue;
- }
- int das=;
- for(int i=; i<=ak-bk+; i++)
- {
- bool flag=true;
- for(int j=i; j<i+bk; j++)
- {
- if(j==i||j==i+bk-)
- {
- if(aa[j]!=bb[j-i+])
- {
- flag=false;
- break;
- }
- }
- else
- {
- if(aa[j]!=bb[j-i+]||ana[j]!=bna[j-i+])
- {
- flag=false;
- break;
- }
- }
- }
- if(flag)
- {
- printf("True\n");
- das=;
- break;
- }
- }
- if(!das)
- printf("False\n");
- }
- return ;
- }
FZU 2183 字符串处理的更多相关文章
- FZU 2137 奇异字符串 后缀树组+RMQ
题目连接:http://acm.fzu.edu.cn/problem.php?pid=2137 题解: 枚举x位置,向左右延伸计算答案 如何计算答案:对字符串建立SA,那么对于想双延伸的长度L,假如有 ...
- FZU 2218 Simple String Problem(简单字符串问题)
Description 题目描述 Recently, you have found your interest in string theory. Here is an interesting que ...
- fzu 1913 Easy Comparison(字符串)
题目链接:fzu 1913 Easy Comparison 题目大意:给出一个字符串,计算与它按照字典序排序排列后的字符串有多少个位置不同. 解题思路:水体,sort一下,然后遍历一遍就好. #inc ...
- I - Magic FZU - 2280 (字符串hash)
题目链接: I - Magic FZU - 2280 学习链接: FZU - 2280 I - Magic 题目大意: 给你nn个字符串,每个字符串有一个值ww,有qq次询问,一共两种操作:一是“1, ...
- FZU 2122 又见LKity【字符串/正难则反/KMP/把一个字符串中某个部分替换为另一个部分】
嗨!大家好,在TempleRun中大家都认识我了吧.我是又笨又穷的猫猫LKity.很高兴这次又与各位FZU的ACMer见面了.最近见到FZU的各位ACMer都在刻苦地集训,整天在日光浴中闲得发慌的我压 ...
- FZU 2027 单词问题 map标记字符串典型问题
题目链接:单词问题 找一个字符串里的所有单词,重复的只输出一次.关于map函数key值是字符串的问题一直比较含糊... 挣扎了一番,大概是,map的key值是char型数组的时候,标记的是地址,于是有 ...
- FZU 2280 Magic(字符串Hash)题解
题意:给你n个字符串,每个字符串有一个值w,有q次询问,一共两种操作:一是“1 x y”表示把第x个串的w变为y:二是“2 x”,输出第x个串能放几次魔法.放魔法的条件是这样:用串x放魔法,如果在1~ ...
- FZU ICPC 2020 寒假训练 6 —— 字符串处理
P1603 斯诺登的密码 题目描述 2013年X月X日,俄罗斯办理了斯诺登的护照,于是他混迹于一架开往委内瑞拉的飞机.但是,这件事情太不周密了,因为FBI的间谍早已获悉他的具体位置--但这不是最重要的 ...
- FZU 1912 Divisibility by Thirty-six(整除问题+字符串维护+贪心)
这个整除36的与整除45的完全一样,就是被4整除的有点多,但都是两位数,所以枚举后面两位就可以了. #include <stdio.h> #include <string.h> ...
随机推荐
- 获取JDBC中的ResultSet的记录的条数
方法一:利用ResultSet的getRow方法来获得ResultSet的总行数 Java代码 ResultSet rs; rs.last(); //移到最后一行 int rowCount = rs. ...
- c# 解析JSON的几种办法(转载)
对比 .NET下几种常见的解析JSON方法 主要类 命名空间 限制 内建LINQ支持 DataContractJsonSerializer System.Runtime.Serialization.J ...
- 运用加密技术保护Java源代码/定制ClassLoader
为什么要加密? 对于传统的C或C++之类的语言来说,要在Web上保护源代码是很容易的,只要不发布它就可以.遗憾的是,Java程序的源代码很容易被别人偷看.只要有一个反编译器,任何人都可以分析别人的代码 ...
- 根据ID获取CEdit的句柄实例
MyApp.h和MyApp.cpp #ifndef MY_APP_H_ #define MY_APP_H_ #include <afxwin.h> class CMyApp:public ...
- 字符串模拟赛T2
// source code from laekov for c0x17 #define PRID "fkqh" #include <cstdio> #include ...
- 物理学家的LOGO
原文选自Inside the Perimeter 阿那克西曼德(c. 610-546 BCE) 古希腊人,被认为是史上第一位物理学家,是有记录的认为世界按一定规律运行的第一人,做科学实验第一人,发明了 ...
- 小白科普之JavaScript的BOM模型
一.什么是BOM 1. BOM是browser object model的缩写,简称浏览器对象模型: 2. BOM提供了独立于内容而与浏览器窗口进行交互的对象,描述了与浏览器进行交互的方法和接口: 3 ...
- 为win7添加ubuntu的启动引导项
利用MBRFix删除ubuntu的开机引导界面,恢复成win7引导之后,为win7添加ubuntu的启动引导项: 直接利用EasyBCD添加一个Grub2的引导项即可 参考:http://mathis ...
- Eclipse 项目红色叹号:Build Path Problem
Description Resource Path Location TypeA cycle was detected in the build path of project 'shgl-categ ...
- 让Delphi的DataSnap发挥最大效率
让Delphi的DataSnap发挥最大效率 让Delphi的DataSnap发挥最大效率 一个DataSnap的应用程序由两个层组成: DataSnap服务器,它有一个带有一个或者更多DataSet ...