Skip to content

Commit d4850fc

Browse files
author
wakidurrahman
committed
how-do-you-reverse-a-string-in-place-in-javascript
1 parent 7a72280 commit d4850fc

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
/**
2+
* https://stackoverflow.com/questions/958908/how-do-you-reverse-a-string-in-place-in-javascript
3+
* *** How do you reverse a string in-place in JavaScript?
4+
*
5+
* *** How do you reverse a string in-place in JavaScript when it is passed to a function with a return statement,
6+
* without using built-in functions (.reverse(), .charAt() etc.)?
7+
* *** Write a function that accepts a string input and returns a reversed copy.
8+
*/
9+
10+
/**
11+
*
12+
* Answers
13+
*
14+
*/
15+
16+
function reverse(s) {
17+
return s.split("").reverse().join("");
18+
}
19+
20+
function reverse(s) {
21+
return [...s].reverse().join("");
22+
}
23+
24+
String.prototype.reverse_string = function () {
25+
return this.split("").reverse().join("");
26+
};
27+
28+
String.prototype.reverse_string = function () {
29+
var s = "";
30+
var i = this.length;
31+
while (i > 0) {
32+
s += this.substring(i - 1, i);
33+
i--;
34+
}
35+
return s;
36+
};
37+
38+
/**
39+
* Detailed analysis and ten different ways to reverse a string and their performance details.
40+
* https://eddmann.com/posts/ten-ways-to-reverse-a-string-in-javascript/
41+
*/
42+
43+
// Implementation 1:
44+
function reverse(s) {
45+
var o = "";
46+
for (var i = s.length - 1; i >= 0; i--) o += s[i];
47+
return o;
48+
}
49+
// Implementation 2:
50+
function reverse(s) {
51+
var o = [];
52+
for (var i = s.length - 1, j = 0; i >= 0; i--, j++) o[j] = s[i];
53+
return o.join("");
54+
}
55+
// Implementation 3:
56+
57+
function reverse(s) {
58+
var o = [];
59+
for (var i = 0, len = s.length; i <= len; i++) o.push(s.charAt(len - i));
60+
return o.join("");
61+
}
62+
// Implementation 4:
63+
64+
function reverse(s) {
65+
return s.split("").reverse().join("");
66+
}
67+
// Implementation 5:
68+
69+
function reverse(s) {
70+
var i = s.length,
71+
o = "";
72+
while (i > 0) {
73+
o += s.substring(i - 1, i);
74+
i--;
75+
}
76+
return o;
77+
}
78+
// Implementation 6:
79+
80+
function reverse(s) {
81+
for (var i = s.length - 1, o = ""; i >= 0; o += s[i--]) {}
82+
return o;
83+
}
84+
// Implementation 7:
85+
86+
function reverse(s) {
87+
return s === "" ? "" : reverse(s.substr(1)) + s.charAt(0);
88+
}
89+
// Implementation 8:
90+
91+
function reverse(s) {
92+
function rev(s, len, o) {
93+
return len === 0 ? o : rev(s, --len, (o += s[len]));
94+
}
95+
return rev(s, s.length, "");
96+
}
97+
// Implementation 9:
98+
99+
function reverse(s) {
100+
s = s.split("");
101+
var len = s.length,
102+
halfIndex = Math.floor(len / 2) - 1,
103+
tmp;
104+
105+
for (var i = 0; i <= halfIndex; i++) {
106+
tmp = s[len - i - 1];
107+
s[len - i - 1] = s[i];
108+
s[i] = tmp;
109+
}
110+
return s.join("");
111+
}
112+
// Implementation 10
113+
114+
function reverse(s) {
115+
if (s.length < 2) return s;
116+
var halfIndex = Math.ceil(s.length / 2);
117+
return reverse(s.substr(halfIndex)) + reverse(s.substr(0, halfIndex));
118+
}
119+
// Implementation 11
120+
121+
var reverser = function (str) {
122+
let string = str.split("");
123+
124+
for (i = 0; i < string.length; i++) {
125+
debugger;
126+
string.splice(i, 0, string.pop());
127+
}
128+
console.log(string.join());
129+
};
130+
reverser("abcdef");
131+
132+
133+
// Implementation 12
134+
const reverse = str => Array.from(str).reverse().join('');

0 commit comments

Comments
 (0)