- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这个java练习:
1。 Captain Crunch 解码环的工作原理是字符串中的每个字母加上 13。例如,“a”变为“n”和“b”变成“o”。字母\wrap around"最后,所以 'z'变成“m”。编写一个接受 String 并返回新 String 的方法包含编码版本。你应该假设字符串包含大小写字母和空格,但没有其他标点符号学费。小写字母应转换为其他小写字母信件;上层进入上层。您不应该对空格进行编码。2.推广Captain Crunch方法,而不是添加13它会在字母上添加任何给定的金额。现在你应该能够通过添加 13 来编码,并通过添加 -13 来解码。尝试一下。
对于第二部分,我尝试概括该方法,以便它适用于任何正数字。如果我使用给定数字对字符串进行编码,则将通过添加 (26 - 数字) 来进行解码。 .. 我的问题是它要求添加 -13 来解码的部分,这对我不起作用::
public static String captainCrunch(String s, int cod){
int i = 0;
char hat = ' ';
String r = "";
while(i < s.length()){
if(s.charAt(i) >= 'a' && s.charAt(i) <= 'm'){
hat = (char)(s.charAt(i) + cod);
}else if(s.charAt(i) >= 'n' && s.charAt(i) <= 'z'){
hat = (char)(s.charAt(i) - cod);
}else if(s.charAt(i) >= 'A' && s.charAt(i) <= 'M'){
hat = (char)(s.charAt(i) + cod);
}else if(s.charAt(i) >= 'N' && s.charAt(i) <= 'Z'){
hat = (char)(s.charAt(i) - cod);
}else if(s.charAt(i) == ' '){
hat = ' ';
}
r = r + hat;
i++;
}
return r;
}
public static String Decoder(String s ,int cod){
int i = 0;
char hat = ' ';
String r = "";
if(cod >= 26){
cod = cod%26;
}
while(i < s.length()){
if(s.charAt(i) >= 'a' && s.charAt(i) <= 'm'){
hat = (char)(s.charAt(i) + cod);
if(s.charAt(i) != 'a' && (s.charAt(i) + cod) > 'z'){
hat = (char)('a' + (s.charAt(i) + cod - 'z') - 1);
}
}else if(s.charAt(i) >= 'n' && s.charAt(i) <= 'z'){
hat = (char)(s.charAt(i) + cod);
if((s.charAt(i) + cod) > 'z'){
hat = (char)('a' + (cod - 1) -('z' - s.charAt(i)));
}
}else if(s.charAt(i) >= 'A' && s.charAt(i) <= 'M'){
hat = (char)(s.charAt(i) + cod);
if(s.charAt(i) != 'A' && (s.charAt(i) + cod) > 'Z'){
hat = (char)('A' + (s.charAt(i) + cod - 'Z') - 1);
}
}else if(s.charAt(i) >= 'N' && s.charAt(i) <= 'Z'){
hat = (char)(s.charAt(i) + cod);
if((s.charAt(i) + cod) > 'Z'){
hat = (char)('A' + (cod - 1) -('Z' - s.charAt(i)));
}
}else if(s.charAt(i) == ' '){
hat = ' ';
}
r = r + hat;
i++;
}
return r;
}
public static void main(String[] args){
System.out.println(Decoder("Hello World", 12));
System.out.println(Decoder("Hello World", 14));
System.out.println(captainCrunch("Hello World", 13));
System.out.println(Decoder("Hello World", 13));
System.out.println(captainCrunch("Uryyb Jbeyq", 13));
System.out.println(captainCrunch("Uryyb Jbeyq", -13));
}
注意:据我所知,第一种方法仅适用于 cod = 13 我制作的第二种方法适用于任何正数。
有什么建议吗???
最佳答案
您可以仅使用一个函数 encodeDecode
来完成此操作,如下所示:
/* encodeOrDecode = 0 for encode
** encodeOrDecode = 1 for decode
*/
public static String encodeDecode(int encodeOrDecode, String s, int code) {
String result = "";
if (encodeOrDecode == 1) {
code *= -1;
}
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
if (Character.isUpperCase(ch)) {
ch += code;
if (ch > 'Z') {
ch -= 26;
} else if (ch < 'A') {
ch += 26;
}
} else if (Character.isLowerCase(ch)) {
ch += code;
if (ch > 'z') {
ch -= 26;
} else if (ch < 'a') {
ch += 26;
}
}
result += ch;
}
return result;
}
关于java - 破译队长紧缩代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39242632/
在建议装箱算法之前,他们假设您可以重新排序元素并按照您喜欢的方式排列它们。请注意,当您阅读时,我对顺序和安排有限制。 很明显,没有 kerning div 这样的东西,但这是我能想到的最合适的术语。基
我想添加自定义 counters到我的Apache Crunch使用 org.apache.hadoop.mapreduce.Reducer.Context.getCounter API 的作业。有人
我是一名优秀的程序员,十分优秀!