-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCaeserCipher.java
More file actions
45 lines (38 loc) · 1.39 KB
/
Copy pathCaeserCipher.java
File metadata and controls
45 lines (38 loc) · 1.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package basic;
public class CaeserCipher {
public static String solution(String s, int n) {
char[] elements = s.toCharArray();
char[] results = new char[elements.length];
for (int i = 0; i < elements.length; i++) {
char element = elements[i];
results[i] = push(element, n);
}
return String.valueOf(results);
}
public static char push(char c, int n) {
if (!Character.isAlphabetic(c))
return c;
int offset = Character.isUpperCase(c) ? 'A' : 'a';
int position = (c - offset + n) % ('z' - 'a' + 1);
return (char) (offset + position);
}
public static String Solution_backup(String s, int n) {
char[] elements = s.toCharArray();
char[] results = new char[elements.length];
int circle = 'z' - 'a' + 1;
for (int i = 0; i < elements.length; i++) {
char element = elements[i];
if (element == ' ') {
results[i] = ' ';
continue;
}
if ('a' <= element && element <= 'z') {
results[i] = (char) ('a' + (element - 'a' + n) % circle);
continue;
}
results[i] = (char) ('A' + (element - 'A' + n) % circle);
System.out.println("final - " + element + " : " + results[i]);
}
return String.valueOf(results);
}
}