2017-08-26 6 views
0

semaines dernière, je une donnant un événement hackathon pour mon collège dans lequel si on leur donne une chaîne que nous devons supprimer l'une ou l'autre première occurence ou la dernière apparition de sous-chaîne,cas de test pour éliminer toutes les occurrences de sous-chaîne

Exemple s = « acaaac » et t = « a » s est la principale chaîne t est la sous-chaîne

s pourraient être « caaac » ou « ACAAC », nous devons trouver nombre maximum de mouvements pour s et t données

L'entrée contient uniquement des lettres alphabétiques minuscules [az]

Cas de test 1: s = "aabb" et t = "ab", supprimer l'apparition de t dans "aabb" s devient "ab" ensuite supprimer la seule occurrence de la chaîne pour obtenir s = "" Comme il n'y a pas plus d'occurrences dans s de t nous retournons 2

test cas n ° 2: s = "aabcd" t = "abc" ---> une seule occurence compte donc est 1,

test Case 3: de = "aa" t = "b de" count = 0

i essayé code suivant pseudo en java

count = 0 
while(s.contains(t)) 
{ 
s=s.replacefirst(t,"") 
count++; 
} 
return count; 

mais je ne reçois pas quels cas test, je suis absent, je passe 9 sur 14 dans mon cas

Puis-je savoir quels cas tests que je suis absent?

+0

sans l'entrée qui échoue, il ne sera pas facile de vous aider – alfasin

+0

Vous avez mentionné, soit le premier ou le dernier ... mais vous supprimez uniquement le premier ici. –

+0

Si nous vous donnons des réponses, seriez-vous en mesure de les réessayer? S'il est trop tard, alors nous devinons aveuglément et nous ne pouvons pas dire si nos suppositions sont bonnes, donc il n'y a pas beaucoup de raison de faire des efforts. La seule chose que je peux penser est que vous pourriez ne pas manipuler des chaînes nulles ou vides. Ou peut-être que votre code Java n'implémente pas correctement votre pseudo-code. – ajb

Répondre

2

Voici un exemple où votre code donnera une mauvaise réponse:

s = ababaa, t = aba

Vous allez supprimer la première occurrence, ce qui se traduira par:

(aba) baa -> baa -> 1

Toutefois, si vous supprimez la 2ème occurrence d'abord, puis vous pouvez supprimer une sous-chaîne supplémentaire:

ab (aba) a -> aba -> ' '-> 2

Il semble que vous deviez parcourir toutes les combinaisons possibles de première/dernière suppression et choisir le meilleur résultat.

La question la plus intéressante est de savoir s'il existe un meilleur algorithme plutôt que la force brute?