测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A30957. 生成字母串英语老师要求学生按照如下规则写一串字母:- 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;- 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写。例如 `aAaABCDdcbBC` 就是一个合法的字母串;而 `dEFfeFGhI` 就是非法的。本题就请你编写程序,自动生成一个合法的字母串。输入输入在第一行给出一个不超…

填空题 较易

题目描述

生成字母串

英语老师要求学生按照如下规则写一串字母:

- 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;

- 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写。

例如 `aAaABCDdcbBC` 就是一个合法的字母串;而 `dEFfeFGhI` 就是非法的。

本题就请你编写程序,自动生成一个合法的字母串。

输入

输入在第一行给出一个不超过 10000 的正整数 N 和第一个字母。

随后一行给出一个由 `0` 和 `1` 组成的长度为 N 的字符串。

这个串给出了字母串的生成规则:从第一个字母开始,如果对应的规则串字符是 `0`,则下一个字母应该生成当前字母的大/小写;如果是 `1` 则下一个字母应该生成当前字母的前/后一个字母。 注意:因为字母表中 `a` 没有前一个字母,`Z` 没有后一个字母,所以如果此时遇到 `1` 就忽略之。

输出

在一行中输出按规则生成的字母串。

样例输入

12 a
001011101101

样例输出

aAaABCDdcbBC

参考答案

#include<iostream> using namespace std; /* 大写字母,0:下一个就必须写同个字母的小写,1:字母表中下一个字母的大写; 小写字母,0:下一个就必须写同个字母的大写,1:字母表中前一个字母的小写。 */ int main() { int n; char c; string rule; //变换规则 cin>>n>>c; cin>>rule; cout<<c; //先原封不动输出第一个字符 for(int i=0;i<n;i++){ //生成n次 if(rule[i]=='0'){ //规则0 if('A'<=c && c<='Z'){ //大写,转换为同个字母的小写 c += 32; } else { //小写,转换为同个字母的大写 c -= 32; } } else{ //规则1 if('A'<=c&& c<='Z'){ //大写,转换为下一个字母的大写 if(c=='Z') continue; //没有,忽略 c += 1; } else { //小写,转换为前一个字母的小写 if(c=='a') continue; //没有,忽略 c -= 1; } } cout<<c; } return 0; }
上一题 下一题