【发布时间】:2018-11-16 18:23:45
【问题描述】:
大家好!
我有一个映射,键为字符,值为字符串,如下所示(Baconian Cipher):
public class MyClass {
private static final Map<Character, String> cipheredAlphabet;
static {
cipheredAlphabet = new HashMap<Character, String>();
cipheredAlphabet.put('a', "AAAAA");
cipheredAlphabet.put('s', "BAABA");
}
}
我有一个如下所示的字符串:
String encodedMessage = "BAABAAAAAA";
我想一次迭代 5 个字母:
StringBuilder decodedMessage = new StringBuilder();
for(int i=0; i<encodedMessage.length(); i+=5) {
String fiveLetters = encodedMessage.substring(i, i+5);
// compare five letters to values and append the corresponding key
}
我如何将这五个字母与我的地图中的值进行比较,并在我的 StringBuilder 中附加一个相应的键?
预期输出:
sa
使用文档中的信息,我想出了如下内容:
StringBuilder decodedMessage = new StringBuilder();
for(int i=0; i<encodedMessage.length(); i+=5) {
String fiveLetters = encodedMessage.substring(i, i+5);
// pseudo code starts from this point
for(Map.Entry<Character, String> entry: cipheredAlphabet.entrySet()) {
if(cipheredAlphabet.getValue().equals(fiveLetters))
decodedMessage.append(cipheredAlphabet.getKey());
【问题讨论】: