7-18 生成字母串
英语老师要求学生按照如下规则写一串字母:
- 如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中下一个字母的大写;
- 如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中前一个字母的小写。
例如 aAaABCDdcbBC
就是一个合法的字母串;而 dEFfeFGhI
就是非法的。
本题就请你编写程序,自动生成一个合法的字母串。
输入格式:
输入在第一行给出一个不超过 104 的正整数 N 和第一个字母。
随后一行给出一个由 0
和 1
组成的长度为 N 的字符串。这个串给出了字母串的生成规则:从第一个字母开始,如果对应的规则串字符是 0
,则下一个字母应该生成当前字母的大/小写;如果是 1
则下一个字母应该生成当前字母的前/后一个字母。
**注意:**因为字母表中 a
没有前一个字母,Z
没有后一个字母,所以如果此时遇到 1
就忽略之。
输出格式:
在一行中输出按规则生成的字母串。
输入样例:
tex
12 a
001011101101
12 a
001011101101
输出样例:
tex
aAaABCDdcbBC
aAaABCDdcbBC
Solution:
java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] input = in.readLine().split(" ");
int n = Integer.parseInt(input[0]);
char c = input[1].charAt(0);
char[] chars = in.readLine().toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(c);
for (int i = 0; i < chars.length; i++) {
int num = chars[i] - '0';
if (num == 0) {
if (c >= 'A' && c <= 'Z') {
c += 32;
sb.append(c);
} else if (c >= 'a' && c <= 'z') {
c -= 32;
sb.append(c);
}
} else {
if (c >= 'A' && c < 'Z') {
c += 1;
sb.append(c);
} else if (c > 'a' && c <= 'z') {
c -= 1;
sb.append(c);
}
}
}
System.out.println(sb);
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String[] input = in.readLine().split(" ");
int n = Integer.parseInt(input[0]);
char c = input[1].charAt(0);
char[] chars = in.readLine().toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(c);
for (int i = 0; i < chars.length; i++) {
int num = chars[i] - '0';
if (num == 0) {
if (c >= 'A' && c <= 'Z') {
c += 32;
sb.append(c);
} else if (c >= 'a' && c <= 'z') {
c -= 32;
sb.append(c);
}
} else {
if (c >= 'A' && c < 'Z') {
c += 1;
sb.append(c);
} else if (c > 'a' && c <= 'z') {
c -= 1;
sb.append(c);
}
}
}
System.out.println(sb);
}
}