Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 64b510c

Browse files
Created: Solution for Caesar's Cipher
1 parent 9fd706e commit 64b510c

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
function caesarCipher(str, k) {
2+
// Helper function to shift a single character by k positions
3+
function shiftChar(char, k) {
4+
const isUpperCase = /[A-Z]/.test(char);
5+
const alphabetSize = 26;
6+
7+
const baseCharCode = isUpperCase ? 'A'.charCodeAt(0) : 'a'.charCodeAt(0);
8+
const shiftedCharCode = ((char.charCodeAt(0) - baseCharCode + k) % alphabetSize + alphabetSize) % alphabetSize + baseCharCode;
9+
10+
return String.fromCharCode(shiftedCharCode);
11+
}
12+
13+
let result = '';
14+
15+
for (let i = 0; i < str.length; i++) {
16+
const char = str[i];
17+
18+
if (/[A-Za-z]/.test(char)) {
19+
result += shiftChar(char, k);
20+
} else {
21+
result += char; // Non-alphabetic characters remain unchanged
22+
}
23+
}
24+
25+
return result;
26+
}
27+
28+
// Examples
29+
console.log(caesarCipher("middle-Outz", 2)); // ➞ "okffng-Qwvb"
30+
console.log(caesarCipher("Always-Look-on-the-Bright-Side-of-Life", 5)); // ➞ "Fqbfdx-Qttp-ts-ymj-Gwnlmy-Xnij-tk-Qnkj"
31+
console.log(caesarCipher("A friend in need is a friend indeed", 20)); // ➞ "U zlcyhx ch hyyx cm u zlcyhx chxyyx"

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /