JavaScript algorithms with solutions part 1
September 10, 2018 JavaScript
1.Repeat a string
Example
function repeatString(str,num){
...
}
console.log(repeatString('hi there',4)); // hi therehi therehi therehi there
My Solution:
function repeatString(str,num){
return num<=0 ?"":str+repeatString(str,num-1)
}
Other solution:
function repeatString(str,num){
if (num<=0) {
return ''
}
return str.repeat(num)
}
2.Truncate a string
Example
function truncateString(str,num){
...
}
console.log(truncateString('moetez',1)) // m...
console.log(truncateString('moetez',9)) // moetez
My Solution:
function truncateString(str, num) {
if (str.length > num && num > 3) {
return `${str.slice(0, num - 3)}...`
} else if (str.length > num && num <= 3) {
return `${str.slice(0, num)}...`
}
return str
}
Other solution:
function truncateString(str, num) {
if (str.length > num) {
return `${str.slice(0, num>3?num-3:num)}...`
}
return str
}
3.Return the length of the longest word in a string
Example
function longestWordLength(str) {
...
}
console.log(longestWordLength('moetez is learning')) // 8
My Solution:
function longestWordLength(str) {
const words = str.split(' ')
let maxLength = 0
for (const word of words) {
if (word.length > maxLength) {
maxLength = word.length
}
}
return maxLength
}
Other solution:
function longestWordLength(str) {
return str.split(' ').reduce((x,y)=>{
return Math.max(x,y.length)
},0)
}
4.Reverse a string
Example
function reverseString(str) {
...
}
console.log(reverseString('moetez is learning')) // gninrael si zeteom
My Solution:
function reverseString(str) {
return str.split('').reverse().join('')
}
Other solution:
function reverseString(str) {
let newString=''
for (let index = str.length-1; index >=0; index--) {
newString+=str[index]
}
return newString
}
5.Factorialize a Number
Example
function factorialize(num) {
...
}
console.log(factorialize(4)) // 24
My Solution:
function factorialize(num) {
if (num < 0) return -1
return num===0?1:num*factorialize(num-1)
}
Other solution:
function factorialize(num) {
let result=1
for (let index = num; index >0; index--) {
result*=index
}
return result
}
6.Palindromes
Example
function palindrome(str) {
}
console.log(palindrome("eye")) // true
My Solution:
function palindrome(str) {
const newStr = str.split('').reverse().join('')
if (str.toLowerCase()==newStr.toLowerCase()) {
return true
}else{
return false
}
}
7.Title Case
Example
function titleCase(str) {
...
}
console.log(titleCase("I am the last one")) // I Am The Last One
My Solution:
function titleCase(str) {
const newStr=str.split(' ').map((word)=>{
return word.replace(word[0],word[0].toUpperCase())
})
return newStr.join(' ')
}
Other solutions:
function titleCase(str) {
return str.toLowerCase().replace(/(^|\s)\S/g,(letter)=>letter.toUpperCase())
}
function titleCase(str) {
str=str.split(' ')
for (let index = 0; index < str.length; index++) {
str[index]=str[index].toLowerCase().split('')
str[index][0]=str[index][0].toUpperCase()
str[index]=str[index].join('')
}
return str.join(' ')
}
8.Return the largest numbers in arrays
Example
const NumbersArray=[
[742,12,340],
[678,500,1002],
[15,80,63,666]
]
function largestNumber(array) {
...
}
console.log(largestNumber(NumbersArray)) // [ 742, 1002, 666 ]
My Solution:
function largestNumber(array) {
const largest=array.map(array=>{
return array.reduce(( acc, cur ) => Math.max( acc, cur))
})
return largest
}
Other solutions:
function largestNumber(array) {
let results=[]
for (let index = 0; index < array.length; index++) {
let maxNumber = array[index][0]
for (let index2 = 0; index2 < array[index].length; index2++) {
if (array[index][index2]>maxNumber) {
maxNumber=array[index][index2]
}
}
results[index]=maxNumber
}
return results
}
function largestNumber(array) {
const largest=array.map(array=>{
return array.reduce(( acc, cur ) => (cur>acc)?cur:acc)
})
return largest
}
function largestNumber(array) {
return array.map(Function.apply.bind(Math.max,null))
}
9.Confirm the ending
Example
function confirmEnding(str,ending) {
...
}
console.log(confirmEnding('moetez','z')) //true
My Solution:
function confirmEnding(str,ending) {
return str.slice(str.length-ending.length)==ending
}
Other solutions:
function confirmEnding(str,ending) {
return str.substr(-ending.length)==ending
}
10.Chunky Monkey
Example
function chunky(array,size) {
...
}
console.log(chunky(['a','b','c','d'],2)) // [ [ 'a', 'b' ], [ 'c', 'd' ] ]
My Solution:
function chunky(array, size) {
let total = 0
let newArray = []
while (total < array.length) {
newArray.push(array.slice(total, total + size))
total += size
}
return newArray
}
Other solutions:
function chunky(array,size) {
let temp=[]
let result=[]
for (let index = 0; index < array.length; index++) {
if (index%size!==size-1) {
temp.push(array[index])
}else{
temp.push(array[index])
result.push(temp)
temp=[]
}
}
return result
}
function chunky(array,size) {
let result=[]
for (let index = 0; index < array.length; index+=size) {
result.push(array.slice(index,index+size))
}
return result
}
function chunky(array, size) {
let newArray = []
while (array.length) {
newArray.push(array.splice(0,size))
}
return newArray
}
algorithmsjavascript