this post was submitted on 29 Aug 2023
17 points (94.7% liked)

General Programming Discussion

7700 readers
1 users here now

A general programming discussion community.

Rules:

  1. Be civil.
  2. Please start discussions that spark conversation

Other communities

Systems

Functional Programming

Also related

founded 5 years ago
MODERATORS
 

I am beginner who thought before doing the String Methods section of the course "You know what, let's test my skills". And boy my skills were tested. After I completed the challenge my jaw dropped, with the solution.

Had/Have this happened to y'all. Where you make something complicated and found out that there was a simple solution?

Solution

My Code

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 year ago (2 children)

a couple notes

  • you should declare all variables with let before you assign them, it's good practice and you can enforce it by enabling strict mode - put "use strict"; at the beginning of your function (or the entire script). Of course it's only needed in browsers, strict mode is usually enabled by default in most tools.
  • try not to execute extra code if you can help it. For example, in this case only the final reversedWord value matters, so you can do it at the end as opposed to on every iteration. Your code right now works in O(N^2) - with every new character in the string its speed decreases exponentially, but it should work in O(N) - a linear time. If you couldn't create reversedWord at the end, you could still initialize it with an empty string and append some text with += on every iteration, that still works in O(N) time as you don't have to recreate the entire string on every iteration.
[–] [email protected] 3 points 1 year ago

O(N^2) - with every new character in the string its speed decreases exponentially,

Try to be precise when teaching others. O(N^2) increases "quadratically" not exponentially. O(k^N) would be exponentially increasing with N.

[–] [email protected] 1 points 1 year ago (1 children)

(For point 1) Got it, from now on variables will be declared with let. I don't understand what is "use strict"; maybe you can explain it.

(For point 2) I was testing to see if reversedWord printed the desired output in the Console, forgot to remove it after finishing the program. I also don't understand what 'O(N^2)' and 'O(N)' is, but +=-ing an empty string is a great idea, why didn't i think of that.

[–] [email protected] 3 points 1 year ago

"use strict"; is just a way of enabling more restrictions to make writing JS less error prone. You can find the details of what that does on MDN (or, if you don't like long verbose technical explanations, this is a pretty good summary!)