-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCaesarCipher.java
More file actions
97 lines (78 loc) · 3.15 KB
/
CaesarCipher.java
File metadata and controls
97 lines (78 loc) · 3.15 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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
/*
Problem Statement: Caesar Cipher Encryption
Julius Caesar used a cipher to encrypt his confidential messages. This cipher shifts each letter in the message by a certain number of positions in the alphabet. If the shift takes a letter past the end of the alphabet, the letter wraps around to the front. For instance, with a rotation factor of 3, the letters w, x, y, and z would map to z, a, b, and c, respectively.
The cipher only encrypts alphabetical characters, while non-alphabetical characters (like punctuation marks and symbols) remain unchanged.
Function Description
Write the function caesarCipher that takes a string and an integer as inputs and returns the encrypted string using Caesar's cipher.
Parameters:
string s: The unencrypted string consisting of letters and other characters.
int k: The number of positions to shift each letter by in the alphabet.
Returns:
string: The encrypted string.
Input Format
The first line contains an integer, n, the length of the unencrypted string.
The second line contains the unencrypted string, s.
The third line contains k, the number of positions to rotate each letter by.
*/
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
class Result
{
/*
* Complete the 'caesarCipher' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
* 1. STRING s
* 2. INTEGER k
*/
public static String caesarCipher(String s, int k)
{
// Write your code here
StringBuilder cCipher = new StringBuilder();
k = k % 26;
for(char ccCharacters : s.toCharArray())
{
if(Character.isLowerCase(ccCharacters))
{
char cRotation1 = (char) ((ccCharacters - 'a' + k) % 26 + 'a');
cCipher.append(cRotation1);
}
else if(Character.isUpperCase(ccCharacters))
{
char cRotation2 = (char) ((ccCharacters - 'A' + k) % 26 + 'A');
cCipher.append(cRotation2);
}
else
{
cCipher.append(ccCharacters);
}
}
return cCipher.toString();
}
}
public class Solution
{
public static void main(String[] args) throws IOException
{
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
int n = Integer.parseInt(bufferedReader.readLine().trim());
String s = bufferedReader.readLine();
int k = Integer.parseInt(bufferedReader.readLine().trim());
String result = Result.caesarCipher(s, k);
bufferedWriter.write(result);
bufferedWriter.newLine();
bufferedReader.close();
bufferedWriter.close();
}
}