String Successor(模拟)
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3490
题意:给出一个字符串,一个操作次数,每次操作从当前字符串最右边的字符开始,如果字符串没有数字和字母则每次使其当前字符ASCII+1,否则,如果当前字符为z(Z),则其加1后为a(A ),并向前进位1给左边的最接近自己的字符或数字,如果当前字符为9,则加1后为0,并),并向前进位1给左边的最接近自己的字符或数字。如果某个数字或字符为最左边的数字或字符,并向前进位1,则在该字符或数字左边增加一个与其相同的字符或数字。
思路:理解题意并注意进位就可以了。。
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int isdigit(char ch)
{
if (ch >= ''&& ch <= '')
return ;
return ;
}
int isalpha(char ch)
{
if (ch >= 'A'&&ch <= 'Z')
return ;
else if (ch >= 'a'&&ch <= 'z')
return ;
else
return ;
}
void judge(string &s,int i)
{
char ch;
if (s[i]=='Z'||s[i]=='z'||s[i]=='')
{
if (s[i]=='Z') {ch = 'A';s[i] = 'A';}
if (s[i]=='z') {ch = 'a';s[i] = 'a';}
if (s[i]=='') {ch = '';s[i] = '';}
}
else
{
s[i]++;
return ;
}
int j;
for (j = i-; j >= ; j--)
{
if (isdigit(s[j])||isalpha(s[j]))
break;
}
string :: iterator it = s.begin();
if (j < )
s.insert(it+i,ch);
else
judge(s,j);
}
int main()
{
int t,k;
scanf("%d%*c",&t);
string s;
while(t--)
{
cin>>s;
scanf("%d",&k);
while(k--)
{
int len = s.size();
int flag = ,i;
for (i = len-; i >= ; i--)
{
if (isdigit(s[i])||isalpha(s[i]))
{
flag = ;
break;
}
}
if(!flag)
{
s[len-]+=;
cout<<s<<endl;
continue;
}
judge(s,i);
cout<<s<<endl;
}
puts("");
}
return ;
}
String Successor(模拟)的更多相关文章
- ZOJ——String Successor(字符串模拟题目)
ZOJ Problem Set - 3490 String Successor Time Limit: 2 Seconds Memory Limit: 65536 KB The succes ...
- ZOJ 3490 String Successor(模拟)
Time Limit: 2 Seconds Memory Limit: 65536 KB The successor to a string can be calculated by applying ...
- ZOJ 3490 String Successor
点我看题目 题意 : 给你一个字符串,让你按照给定规则进行处理. 如果字符串里有字母或者是数字就忽略非字符数字,如果没有,就让最右边的那个字符+1. 增量都是从最右边的字母或者数字开始的. 增加一个数 ...
- ZOJ 3490 String Successor 字符串处理
一道模拟题,来模拟进位 暴力的从右往左扫描,按规则求后继就好了.除了Sample已给出的,还有一些需要注意的地方: 9的后继是10,而不是00: (z)的后继是(aa),而不是a(a): 输入虽然最长 ...
- String Successor zoj 3490
链接 [https://vjudge.net/contest/294259#problem/D] 题意 就是给你一个字符串,要进行n次操作 让你输出每次的字符串 操作规则: 1.如果有数字或者字母就忽 ...
- Codeforces Round #550 (Div. 3) E. Median String (模拟)
Median String time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...
- 2018.08.22 NOIP模拟 string(模拟)
string [描述] 给定两个字符串 s,t,其中 s 只包含小写字母以及*,t 只包含小写字母. 你可以进行任意多次操作,每次选择 s 中的一个*,将它修改为任意多个(可以是 0 个)它的前一个字 ...
- Codeforces Round #550 (Div. 3) E. Median String (思维,模拟)
题意:给你两个字符串\(s\)和\(t\),保证\(t\)的字典序大于\(s\),求他们字典序中间的字符串. 题解:我们假设题目给的不是字符串,而是两个10禁止的正整数,那么输出他们之间的数只要把他两 ...
- 【CF1015B】Obtaining the String(模拟)
题意:给定两个字符串,每次可以交换相邻两个字符,给出任意一组交换次数小于1e4的方案使得a串成为b串,输出交换的次数与位置,无解输出-1 n<=50 思路:每次找到第一个不相同的字符,从后面找到 ...
随机推荐
- 个人总结的常用java,anroid网站
http://blog.csdn.net/wanghao200906/article/details/49334987
- iview“官方“实现的右键菜单
博客开篇,没想到第一篇博文竟然是前端的,虽略显尴尬,但正能量溢出,你我可能遇到同样问题,在这里分享下个人方案,希望对你有用. 官方目前不提供右键菜单,这里借助Dropdown(下拉菜单)来实现,故为“ ...
- CentOS7安装Nginx及其相关
一.安装所需环境 gcc 安装 安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装. yum install gcc-c++ PCRE pcr ...
- buf.readUInt16BE()
buf.readUInt16BE(offset[, noAssert]) buf.readUInt16LE(offset[, noAssert]) offset {Number} 0 <= of ...
- python3 的 zip
准备放弃生命中这4个小时,然后翻开了python,人生苦短,音乐和python才味甘 1. zip 可以看到zip两个列表,返回一个元组的列表,但是它是个可迭代的对象,得用list才能调用显示: 2 ...
- jmeter录制火狐浏览器
昨天看youtube,居然发现有这功能,啊哈哈 听不懂英语 也能有收获. 一.Jmeter 文件中选择Templates->Recording 二.创建之后,自动出现一个模板: 1. Threa ...
- 抓包工具的感触(charles and fiddler)
最近测mobile,一直徘徊在fiddler 和 charles之间: charles 的证书装了 ,才能正常抓包: 后来因为重定向,分享到扣扣,微信的跳转功能,跳转到wap 或者跳转到PC 或者跳 ...
- python爬虫21 | 对于b站这样的滑动验证码,不好意思,照样自动识别
今天 要来说说滑动验证码了 大家应该都很熟悉 点击滑块然后移动到图片缺口进行验证 现在越来越多的网站使用这样的验证方式 为的是增加验证码识别的难度 那么 对于这种验证码 应该怎么破呢 接下来就是 学习 ...
- Latex Notes
latex Table of Contents 1. Presentation/Slides with Beamer 2. Drawing in LaTex With TikZ 3. Tracked ...
- codechef 写题计划
此后将查找各种codechef的脑洞题和好题写