Un de mes amis s'est vu poser la question suivante aujourd'hui lors d'un entretien pour le poste de développeur de logiciels :
Étant donné deux chaînes de caractères s1
et s2
comment allez-vous vérifier si s1
est un tourné version de s2
?
Exemple :
Si s1 = "stackoverflow"
alors voici quelques-unes de ses versions tournées :
"tackoverflows"
"ackoverflowst"
"overflowstack"
où comme "stackoverflwo"
est pas une version pivotée.
La réponse qu'il a donnée est la suivante :
Prenez
s2
et trouver le plus long préfixe qui est une sous-chaîne de caractères des1
qui vous donnera le point de rotation. Une fois que tu as trouvé ce point, casses2
à ce moment-là pour obtenirs2a
ets2b
alors il suffit de vérifier siconcatenate(s2a,s2b) == s1
Cela semble être une bonne solution pour moi et mon ami. Mais l'interviewer pensait autrement. Il a demandé une solution plus simple. Veuillez m'aider en me disant comment vous feriez cela en Java/C/C++
?
Merci d'avance.