Invertire una stringa in JavaScript
- Invertire una stringa utilizzando le funzioni incorporate in JavaScript
- Invertire una stringa utilizzando la ricorsione in JavaScript
Esistono vari modi in cui è possibile invertire una stringa in JavaScript senza utilizzare alcuno spazio aggiuntivo. Il vantaggio di questo è che puoi scrivere un programma con O(1)
complessità spaziale. Significa che non è necessario alcuno spazio aggiuntivo in memoria per archiviare i dati. Utilizzi solo lo stesso spazio fornito a noi, ovvero la dimensione dell’input, e inverti la stringa data all’interno di quello spazio.
Di seguito sono riportati alcuni dei modi con cui è possibile invertire una stringa in JavaScript.
Invertire una stringa utilizzando le funzioni incorporate in JavaScript
Vediamo come invertire una stringa in posizione con l’aiuto delle funzioni integrate disponibili in JavaScript. Ci sono 3 funzioni con le quali puoi ottenere questo e quelle funzioni: split()
, reverse()
e join()
.
Di seguito è riportato ciò che ciascuna delle tre funzioni farà.
split()
separerà ogni carattere di una stringa e lo convertirà in un array.reverse()
prenderà quell’array e invertirà gli elementi al suo interno.join()
si unirà ai caratteri che sono stati invertiti dalla funzionereverse()
.
function reverse(s) {
return s.split('').reverse().join('');
}
var sss = reverse('adam')
console.log(sss)
Produzione:
mada
Per invertire una stringa, devi prima applicare la funzione split()
alla stringa di input. Questa funzione converte la stringa in un oggetto che contiene tutti i caratteri di quella stringa. Dopodiché, puoi utilizzare la funzione JavaScript incorporata reverse()
per invertire una stringa. Questa funzione non funziona direttamente con le stringhe, quindi devi prima convertire la stringa in un oggetto usando la funzione split()
.
Ora hai un oggetto all’interno del quale tutti i personaggi sono in ordine inverso. Per riconvertire questo oggetto in una stringa, puoi usare la funzione join()
. Questa funzione prenderà ogni carattere dalla stringa e la unirà per formare una stringa.
Invertire una stringa utilizzando la ricorsione in JavaScript
Un altro modo per invertire una stringa è usare ricorsione. Qui hai creato una funzione chiamata reverse()
, che accetta str
come argomento. Durante la scrittura di una funzione ricorsiva, devi prima assicurarti di aggiungere una condizione di base. Una condizione di base ci consente di terminare un programma ricorsivo durante l’esecuzione. Se non ci sono condizioni di base nel programma, verrà eseguito all’infinito, cosa che non vogliamo. Questo è il motivo per cui è necessario verificare se la stringa che un utente sta passando a questa funzione è vuota o meno. Se è vuoto, terminerai il programma; altrimenti, eseguirai chiamate ricorsive.
function reverse(str) {
if (str === '') {
return '';
} else {
return reverse(str.substr(1)) + str.charAt(0);
}
}
let reverseStringIs = reverse('adam')
console.log(reverseStringIs)
Produzione
mada
Nella parte else
abbiamo solo una riga di codice. Puoi anche pensare di aver diviso questa riga di codice in 2 parti (questo è solo per ipotesi in modo che tu possa capire il codice). La prima parte è il reverse(str.subset(1))
e la seconda parte è str.charAt(0)
.
La prima parte prende l’intero adam
e prende il suo sottoinsieme a partire dall’indice n. 1 cioè dam
perché d
è in prima posizione. E la seconda parte prende l’intera stringa cioè adam
, e ottiene il carattere all’indice 0 cioè a
.
Eseguiamo una chiamata di ricorsione e quindi passiamo questa sottostringa alla funzione reverse()
cioè dam
e non adam
, poiché hai già creato una sottostringa dalla stringa originale. Ora, quando esegui la parte else
, avrai dam
come stringa di input. Creerai una sottostringa di questa stringa usando la funzione substr()
a partire dall’indice 1. E la sottostringa sarà am
, e str.charAt(0)
ci darà il carattere all’indice 0 e ie d
.
Questo processo continua fino a quando l’intera stringa diventa vuota. A questo punto, ecco come apparirà il nostro stack.
Questa è la sequenza in cui i caratteri verranno restituiti dalla pila - m, a, d, a
. Non appena la stringa diventa vuota, il programma inizierà a estrarre gli elementi uno per uno dallo stack e otterrai la stringa finale in ordine inverso, madam
, come output.
Sahil is a full-stack developer who loves to build software. He likes to share his knowledge by writing technical articles and helping clients by working with them as freelance software engineer and technical writer on Upwork.
LinkedIn