7
votes

Comment puis-je compter le nombre d'occurrences d'un modèle simple dans une chaîne?

Pour cette question, une "paire" dans une chaîne est définie comme une situation où deux instances d'un caractère sont séparées par un autre caractère. Donc, dans "AXA", les A font une paire. Les paires peuvent se chevaucher, donc "Axaxa" contient trois paires; deux pour a et un pour x.

Exemples supplémentaires:

Compairs ("AXA") → 1
Compairs ("Axax") → 2
Compairs ("Axbx") → 1

On m'a demandé comment calculer le nombre de paires dans une chaîne donnée dans une interview hier, et je ne sais pas comment le faire.


2 commentaires

Dommage que j'ai du travail à faire: - /. C'est une question assez intéressante.


@Helper Method.Je ne vous a pas eu. Vous avez souligné que j'étais incapable de le résoudre.


3 Réponses :


10
votes

une solution O (n) serait d'itérer la chaîne (de 0 à longueur-2 ) et (en utilisant charat (..) ) pour vérifier si le Le caractère actuel est égal au courant + 2 . Si tel est le cas, incrémenter un pairscount variable xxx


4 commentaires

Puis-je avoir l'exemple logique s'il vous plaît.Im coincé avec cela depuis matin.


@ Bozho, une clarification, pourquoi avez-vous mentionné str.length () - 3


parce que c'est le dernier caractère qu'une paire peut commencer avec


Eh bien, voyez que vous vérifiez i + 2 . Cela signifie que la dernière valeur de i devrait être 2 inférieure au maximum.



3
votes

Le précédent Awser ne croyait pas le fait que le Caracter au milieu (le séparateur) doit être différent.

Pour cette question, une "paire" dans une chaîne est définie comme une situation où deux instances d'un caractère sont séparées par un autre caractère . Donc, dans "AXA", les A font une paire. Les paires peuvent se chevaucher, donc "Axaxa" contient trois paires; deux pour a et un pour x.

Doit que ces personnages soient différents? Ici ce que je pense que si cela doit être différent ... xxx


1 commentaires

bonne prise. J'ai supposé que AAA est également considéré comme une paire. Mais ce pourrait être l'inverse.



0
votes

avec récursion: xxx


0 commentaires