Chaine de battage (fonction qui renvoie 1 si la chaine3 est une chaine de battage de la chaine 1 et de la chaine 2)

Contenu du snippet

Soient deux chaînes de caractères s1 et s2. On appelle battage de s1 et s2 toute chaîne s composée de tous les caractères de s1 et de s2, 
telle que l'ordre des caractères de s1 et l'ordre des caractères de s2 ne soit pas modifié dans s, et que les caractères de s1
et les caractères de s2 n'apparaissent qu'une fois dans s.

int battage(const char *s1, const char *s2, const char *s, int strlen1, int strlen2, int strlen3)
{
  int i;
  if(strlen1==0) {
    for(i=0; i<strlen2; i++) {
      if(s2[i]!=s[i]) return 0;
    }
    return 1;
  }
  if(strlen2==0) {
    for(i=0; i<strlen1; i++) {
      if(s1[i] != s[i]) return 0;
    }
    return 1;
  }
  if(s[0]==s1[0]) {
    if(battage(s1+1, s2, s+1, strlen1-1, strlen2, strlen3-1)) return 1;
  }
  if(s[0]==s2[0]) {
    if(battage(s1, s2+1, s+1, strlen1, strlen2-1, strlen3-1)) return 1;
  }
  return 0;
}


Compatibilité : C

Disponible dans d'autres langages :

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.