- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCaesarCipher.java
More file actions
Latest commit
97 lines (78 loc) · 3.15 KB
/
Copy pathCaesarCipher.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.
*/
importjava.io.*;
importjava.math.*;
importjava.security.*;
importjava.text.*;
importjava.util.*;
importjava.util.concurrent.*;
importjava.util.function.*;
importjava.util.regex.*;
importjava.util.stream.*;
importstaticjava.util.stream.Collectors.joining;
importstaticjava.util.stream.Collectors.toList;
classResult
{
/*
* Complete the 'caesarCipher' function below.
*
* The function is expected to return a STRING.
* The function accepts following parameters:
* 1. STRING s
* 2. INTEGER k
*/
publicstaticStringcaesarCipher(Strings, intk)
{
// Write your code here
StringBuildercCipher = newStringBuilder();
k = k % 26;
for(charccCharacters : s.toCharArray())
{
if(Character.isLowerCase(ccCharacters))
{
charcRotation1 = (char) ((ccCharacters - 'a' + k) % 26 + 'a');
cCipher.append(cRotation1);
}
elseif(Character.isUpperCase(ccCharacters))
{
charcRotation2 = (char) ((ccCharacters - 'A' + k) % 26 + 'A');
cCipher.append(cRotation2);
}
else
{
cCipher.append(ccCharacters);
}
}
returncCipher.toString();
}
}
publicclassSolution
{
publicstaticvoidmain(String[] args) throwsIOException
{
BufferedReaderbufferedReader = newBufferedReader(newInputStreamReader(System.in));
BufferedWriterbufferedWriter = newBufferedWriter(newFileWriter(System.getenv("OUTPUT_PATH")));
intn = Integer.parseInt(bufferedReader.readLine().trim());
Strings = bufferedReader.readLine();
intk = Integer.parseInt(bufferedReader.readLine().trim());
Stringresult = Result.caesarCipher(s, k);
bufferedWriter.write(result);
bufferedWriter.newLine();
bufferedReader.close();
bufferedWriter.close();
}
}