Skip to content

Commit 607fac7

Browse files
author
Kyle Maune
committed
added solution for swap II
1 parent 00e05cd commit 607fac7

File tree

1 file changed

+74
-0
lines changed

1 file changed

+74
-0
lines changed

Medium Difficulty/swapII.js

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// coderbyte solution for swap II
2+
// splashinn
3+
4+
function IsLetter(char) {
5+
return "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(char) !== -1;
6+
}
7+
8+
function IsDigit(char) {
9+
return "0123456789".indexOf(char) !== -1;
10+
}
11+
12+
function splitToArray(str) {
13+
if (str.length === 0) {
14+
return [];
15+
}
16+
var result = new Array();
17+
var inDigits = IsDigit(str[0]);
18+
var begin = 0;
19+
for (var i = 1; i < str.length; i++) {
20+
var digit = IsDigit(str[i]);
21+
if (digit !== inDigits) {
22+
result.push(str.slice(begin, i));
23+
begin = i;
24+
inDigits = digit;
25+
}
26+
}
27+
result.push(str.slice(begin, str.length));
28+
return result;
29+
}
30+
31+
function isNumber(str) {
32+
for (var i = 0; i < str.length; i++) {
33+
if (IsDigit(str[i]) !== true) {
34+
return false;
35+
}
36+
}
37+
return true;
38+
}
39+
40+
function isWord(str) {
41+
for (var i = 0; i < str.length; i++) {
42+
if (IsLetter(str[i]) !== true) {
43+
return false;
44+
}
45+
}
46+
return true;
47+
}
48+
49+
50+
function SwapII(str) {
51+
var result = new Array(str.length);
52+
for (var i = 0; i < str.length; i++) {
53+
if ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(str[i]) !== -1) {
54+
if (str[i].toUpperCase() !== str[i]) {
55+
result[i] = str[i].toUpperCase();
56+
} else {
57+
result[i] = str[i].toLowerCase();
58+
}
59+
} else {
60+
result[i] = str[i];
61+
}
62+
}
63+
64+
var splitted = splitToArray(result.join(""));
65+
for (var i = 1; i + 1 < splitted.length; i++) {
66+
if (isWord(splitted[i]) && isNumber(splitted[i - 1]) && isNumber(splitted[i + 1])) {
67+
var temp = splitted[i - 1];
68+
splitted[i - 1] = splitted[i + 1];
69+
splitted[i + 1] = temp;
70+
}
71+
}
72+
73+
return splitted.join("");
74+
}

0 commit comments

Comments
 (0)