第一行输入一个长度为
,仅由小写字母构成的字符串
,代表待构建的新字母表底串。
第二行输入一个长度为
,仅由小写字母构成的字符串
,代表需要加密的明文。
在一行上输出一个字符串,代表加密后的密文。
trailblazers attackatdawn
tpptadtpitvh
在这个样例中,加密的操作如下:
对
进行去重
,得到
;
随后从
开始依次在字符串末尾补充
中未出现的字母,得到
;
最后,对于
中的每个字母,替换为
构建得到的新字母表中相同位置的字母。我们可以列出对照表:
最后,对于
中的每个字母,替换为
构建得到的新字母表中相同位置的字母,得到
。
nihao ni
le
import java.util.Scanner;
import java.util.TreeSet;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
char[] ch = str.toCharArray();
int count =0;
for(int i=0; i<ch.length; i++){
// count++;
for(int j=1; j<ch.length-i; j++){
if(ch[i] == ch[i+j]){
ch[i+j]= '*';
}
}
}
String str0 = String.valueOf(ch);
str0 = str0.replaceAll("\\*","");
String str1 = "abcdefghijklmnopqrstuvwxyz";
for(int i=0; i<str1.length(); i++){
if(str0.contains(str1.substring(i,i+1))){
count++;
str1 = str1.replaceAll(str1.substring(i,i+1),"*");
}
}
str1 = str1.replaceAll("\\*","");
str0 = str0+str1;
String input = in.nextLine();
char[] chin = input.toCharArray();
char[] match = str0.toCharArray();
for(int i =0; i<input.length(); i++){
int m = (int)chin[i]-97;
System.out.print(match[m]);
}
}
} import java.util.Scanner;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
String str =in.next(),password=in.next(),table="";
char[] charTable = new char[26];
int offset = 97;
for(int i=0;i<str.length();i++){
if(!table.contains(String.valueOf(str.charAt(i))))
table+=str.charAt(i);
}
for(char a='a';a<='z';a++){
if(!table.contains(String.valueOf(a)))
table+=a;
}
charTable=table.toCharArray();
table="";
for(int i=0;i<password.length();i++){
table+=charTable[password.charAt(i)-offset];
}
System.out.println(table);
}
} import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String s = in.next();
String t = in.next();
// 对s去重 => s1
int[] cnt = new int[26]; // 记录26个字母出现次数
String s1 = "";
for (char c : s.toCharArray()) {
if (cnt[c - 'a'] == 0) {
cnt[c - 'a']++;
s1 += c;
}
}
// s1 + 未出现字母
for (int i = 0; i < 26; i++) {
if (cnt[i] == 0) {
s1 += (char)('a' + i);
}
}
// 对t加密 => res
String res = "";
for (char c : t.toCharArray()) {
res += s1.charAt(c - 'a');
}
System.out.print(res);
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
// 注意 hasNext 和 hasNextLine 的区别
String s;
while ((s=in.readLine())!=null) { // 注意 while 处理多个 case
char[] arr = getArray(s);
s = in.readLine();
char[] res = new char[s.length()];
for (int i = 0;i < s.length();i++) {
res[i] = arr[s.charAt(i)];
}
System.out.println(String.valueOf(res));
}
}
private static char[] getArray(String s) {
char[] arr = new char[128];
StringBuilder sb = new StringBuilder(s);
for (int i = 0;i < sb.length();i++) {
while (sb.indexOf(String.valueOf(sb.charAt(i))) != sb.lastIndexOf(String.valueOf(sb.charAt(i)))) {
sb.deleteCharAt(sb.lastIndexOf(String.valueOf(sb.charAt(i))));
}
}
s = sb.toString();
sb = new StringBuilder();
int j = 0;
for (char i = 'a';i <= 'z';i++) {
sb.append(i);
if (arr[i] == 0) {
if (j < s.length())
arr[i] = s.charAt(j);
}
j++;
}
for (int i = 0;i < s.length();i++) {
while (sb.indexOf(String.valueOf(s.charAt(i))) > -1) {
sb.deleteCharAt(sb.indexOf(String.valueOf(s.charAt(i))));
}
}
j = 0;
for (char i = (char)('a'+s.length());i <= 'z';i++) {
if (arr[i] == 0) {
if (j < sb.length())
arr[i] = sb.charAt(j);
}
j++;
}
return arr;
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
String key = in.nextLine();
String str = in.nextLine();
//定义大写字母表
String upperAlphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
//定义小写字母表
String lowerAlphabet = "abcdefghijklmnopqrstuvwxyz";
//使用linkedHashSet去重
LinkedHashSet<Character> upperSet = new LinkedHashSet<>();
LinkedHashSet<Character> lowerSet = new LinkedHashSet<>();
for (int i = 0; i < key.length(); i++) {
upperSet.add(Character.toUpperCase(key.charAt(i)));
lowerSet.add(Character.toLowerCase(key.charAt(i)));
}
for (char c = 'A'; c <= 'Z'; c++) {
upperSet.add(c);
}
for (char c = 'a'; c <= 'z'; c++) {
lowerSet.add(c);
}
List<Character> lowerList = new ArrayList<>(lowerSet);
List<Character> upperList = new ArrayList<>(upperSet);
//对字符串进行加密
for (int i = 0; i < str.length(); i++) {
int index = -1;
char c = str.charAt(i);
if (c >= 'a' && c <= 'z') {
for (int j = 0; j < lowerAlphabet.length(); j++) {
if (c == lowerAlphabet.charAt(j)) {
index = j;
break;
}
}
if (index != -1) {
System.out.print(lowerList.get(index));
}
} else {
for (int j = 0; j < upperAlphabet.length(); j++) {
if (c == upperAlphabet.charAt(j)) {
index = j;
break;
}
}
if (index != -1) {
System.out.print(upperList.get(index));
}
}
}
}
}
} import java.util.LinkedHashSet;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
char[] key = in.nextLine().toCharArray();
char[] wolds = in.nextLine().toCharArray();
Set<Character> set = new LinkedHashSet<>();
for (char c : key) {
set.add(c);
}
int k = 0;
while (set.size() < 26) {
char c = (char)('a' + k);
set.add(c);
k++;
}
Object[] arr = set.toArray();
StringBuilder builder = new StringBuilder();
for (char c : wolds) {
int n = c - 'a';
builder.append(arr[n]);
}
System.out.println(builder.toString());
}
} import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
private static final int LOWER_CASE_SIZE = 26;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String key = null;
while ((key = br.readLine()) != null) {
char[] kChs = key.toLowerCase().toCharArray();
char[] dict = new char[LOWER_CASE_SIZE];
boolean[] seen = new boolean[LOWER_CASE_SIZE];
int idx = 0;
for (char ch : kChs) {
if (seen[ch - 'a']) {
continue;
}
dict[idx++] = ch;
seen[ch - 'a'] = true;
}
for (int i = 0; i < LOWER_CASE_SIZE; i++) {
if (seen[i]) {
continue;
}
dict[idx++] = (char) (i + 'a');
}
char[] pChs = br.readLine().toLowerCase().toCharArray();
StringBuilder sb = new StringBuilder();
for (char ch : pChs) {
sb.append(dict[ch - 'a']);
}
System.out.println(sb);
}
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String s1 = in.nextLine();
String s2 = in.nextLine();
Set<Character> tree = new LinkedHashSet();
for (int i = 0; i < s1.length(); i++) {
tree.add(s1.charAt(i));
}
//构建字母表
String letter = "abcdefghijklmnopqrstuvwxyz";
StringBuilder stringBuilder = new StringBuilder();
for (Character c : tree) {
letter = letter.replace(c+"","");
stringBuilder.append(c);
}
stringBuilder.append(letter);
//注意:字母字符的大小写状态应该保留
StringBuilder res = new StringBuilder();
for (char c : s2.toCharArray()) {
if (Character.isUpperCase(c)){
res.append(Character.toUpperCase(stringBuilder.charAt(c - 'A')));
}else if (Character.isLowerCase(c)){
res.append(stringBuilder.charAt(c - 'a'));
}else {
res.append(c);
}
}
System.out.println(res);
}
}
} import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String key = in.nextLine() + "abcdefghijklmnopqrstuvwxyz";
String word = in.nextLine();
List<Character> list = new ArrayList();
for(int i = 0; i < key.length(); i++){
if(!list.contains(key.charAt(i)))
list.add(key.charAt(i));
}
for(int i = 0; i < word.length(); i++){
System.out.print(list.get(word.charAt(i) - 'a'));
}
}
} import java.util.*;
import java.util.stream.Collectors;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String key = in.nextLine();
String word = in.nextLine();
String result = key + "abcdefghijklmnopqrstuvwxyz";
List<Character> allList = new ArrayList<>();
for(char c:result.toCharArray()){
allList.add(c);
}
List<Character> list = allList.stream().distinct().collect(Collectors.toList());
StringBuilder sb = new StringBuilder();
for(char a:word.toCharArray()){
sb.append(list.get(a-'a'));
}
System.out.println(sb.toString());
}
} import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String key = in.nextLine();
String input = in.nextLine();
System.out.print(new Main().encrypt(key, input));
}
public String encrypt(String key, String input) {
char[] chars = key.toCharArray();
LinkedHashSet<Character> set = new LinkedHashSet<>();
for (char ch : chars) {
set.add(ch);
}
LinkedHashSet<Character> set1 = new LinkedHashSet<>();
for (int i = 97; i <= 122; i++) {
set1.add((char)i);
}
LinkedHashSet<Character> set2 = new LinkedHashSet<>();
set2.addAll(set1);
set1.removeAll(set);
set.addAll(set1);
HashMap<Character, Character> map = new HashMap<>();
Iterator<Character> iterator2 = set2.iterator();
Iterator<Character> iterator = set.iterator();
for (int i = 0; i < set.size(); i++) {
map.put(iterator2.next(), iterator.next());
}
char[] chs = input.toCharArray();
for (int i = 0; i < chs.length; i++) {
if (Character.isLetter(chs[i])) {
chs[i] = map.get(chs[i]);
}
}
return new String(chs);
}
} import java.util.Scanner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.LinkedHashSet;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String key = br.readLine();
String line = br.readLine();
// 业务场景为存取有序,且不重复,所以用linkedHashSet数据结构
LinkedHashSet<Character> set = new LinkedHashSet<>();
for (int i = 0; i < key.length(); i++) {
char c = key.charAt(i);
// 统一转换为大写
set.add(Character.toUpperCase(c));
}
// 添加其他的字母到密钥中
for (char i = 'A'; i <= 'Z'; i++) {
set.add(i);
}
// 转换为list,方便后续使用索引找到对应加密后的字符
ArrayList<Character> list = new ArrayList<>();
for (Character character : set) {
list.add(character);
}
// 打印密钥
// System.out.println(list);
// 正常顺序的字符,保存大写,与密钥大小写一致
ArrayList<Character> list2 = new ArrayList<>();
for (char i = 'A'; i <= 'Z'; i++) {
list2.add(i);
}
//System.out.println(list2);
StringBuilder result = new StringBuilder();
// 遍历要加密的字符串
for (int i = 0; i < line.length(); i++) {
char c = line.charAt(i);
// 获取在正常字符顺序中的索引值
int index = list2.indexOf(Character.toUpperCase(c));
// 获取加密后的字符
Character character = list.get(index);
// 大小写保持一致
if (Character.isLowerCase(c)){
result.append(Character.toLowerCase(character));
}else if (Character.isUpperCase(c)){
result.append(Character.toUpperCase(character));
}
}
System.out.println(result);
}
}