0
votes

Entrelacer deux chaînes de longueur différente

J'ai deux ficelles A et B, la longueur de B est la moitié de la longueur d'A, j'ai essayé de créer une boucle pour mettre sur le caractère de b tous les 2 caractères d'un a essayé de ce

p>

let a = "pekaoo";
let b = "eb!";
let stop = a.length;
for (let i = 1; i <= stop; i += 2) {
    a = a.substring(0,i) + b[i/2] + a.substring(i);
}

console.log(a);


1 commentaires

A.Stop ne signifie rien.


6 Réponses :


2
votes

Vous pouvez itérer la chaîne avec des lettres simples et couper la chaîne la plus longue en utilisant un facteur de deux.

thinn ajouter toutes les pièces à une nouvelle chaîne. p>

p>

let a = "pekaoo",
    b = "eb!",
    result = '';

for (let i = 0; i < b.length; i++) {
    result += a.slice(i * 2, (i + 1) * 2) + b[i];
}

console.log(result);


1 commentaires

Comme toujours une solution laconique!



1
votes

Utilisation de Remplacer () CODE>

P>

let a = "pekao";
let b = "eb!";

let arr = [...b]
let res = a.replace(/.{1,2}/g, match => match + arr.shift())

console.log(res);


0 commentaires

1
votes

Pour votre demande très spécifique, j'ai pu écrire le code suivant qui semble fonctionner. Devrait également travailler avec des chaînes plus grandes (vous devrez faire quelques modifications mineures alors).

p>

let a = "pekaoo";
let b = "eb!";
var outcome = "";

for(let i = 0; i < a.length/2; i++) {
    outcome += a.substring((i*2),((i+1)*2)) + b.substring(i, i+1);
}

console.log(outcome)


0 commentaires

1
votes

let a = "pekaoo";
let b = "eb!";

let result = "";

for (let i = 0; i < a.length; i++) {
    result += a[i];

    if ((i - 1) % 2 == 0){
    result += b[(i - 1) / 2]
    }
    
}

console.log(result);


0 commentaires

1
votes

et en utilisant SUBSTR au lieu de SUBSTRIND CODE> :

P>

const a = "pekaoo",
      b = "eb!";
let res = "";

for (let i = 0; i <= a.length; i += 2) {
    res += a.substr(i, 2) + b.substr(i/2, 1);
}

console.log(res);


0 commentaires

1
votes

Cela peut ressembler beaucoup, mais c'est une approche plus algorithmique de la solution.

  1. Vous devrez d'abord identifier le mot le plus long, car cela conduira votre réseau de réducteur. LI>
  2. Maintenant, alors que vous réduisez chaque position de caractère, vous réduirez chaque chaîne:
    • Si la longueur de la chaîne de courant est égale à la chaîne la plus longue, vous venez de renvoyer le personnage à l'index global. Li>
    • sinon, si le modulaire de l'indice global et le rapport de la chaîne de courant est 1, renvoyez le décalage du caractère par le rapport de la chaîne de courant. LI> ul> li> ol>

      p>

      .as-console-wrapper { top: 0; max-height: 100% !important; }


0 commentaires