C'est ainsi que vous le résolvez en TCL, peu importe le nombre d'espaces, de tabulations ou de nouvelles lignes ( \n ) existent dans votre chaîne de caractères. Il s'agit d'une solution de la vie réelle et de la façon de penser humaine. Elle ne considère pas qu'un et un seul espace est la marque d'un nouveau mot.
Et je pense qu'en C/C++ et Java, vous pouvez le traduire de la même manière.
J'ai travaillé dessus pendant deux jours avant cette publication, parce que je n'acceptais pas qu'il existe des fonctions fournies par la bibliothèque du langage qui sont aussi faites pour nous, et que nous n'utilisons pas.
<!-- language: lang-php -->
# 1- Reverse the orignial text
set reversed [ string reverse $all_original_text]
# 2- split the reversed string $reversed into a list of words then loop over them
set list_of_reversed_words [split $reversed ]
foreach reversed_words $list_of_reversed_words {
# 3- find the indices of the extremes of each reversed word in the $reversed
set word_start [ string first $reversed_words $reversed $word_start]
set word_end [ expr $word_start -1 + [string length $letter] ]
# 4- reverse the current-in-the-loop reversed word back to its normal state, e.g:
# if i have a word "loohcs" then convert it by reversing it to "school"
set original_word [string reverse [ string range $reversed $word_start $word_end] ]
# 5- replace the reversed word (loohcs) with the correcte one (school)
set reversed [ string replace $reversed $word_start $word_end $original_word]
# 6- set the start-of-search index to the index
# directly after the ending of the current word
set word_start [expr $word_end +1]
# 7-continue to the next loop
}
#print the result
puts "finally: $reversed"
0 votes
Qu'entendez-vous par tableau supplémentaire ? En plus de celui que vous utiliseriez pour stocker les "tokens" (c'est-à-dire les mots), ou en plus de la chaîne de caractères que vous avez donnée en exemple ?
3 votes
Dupe : stackoverflow.com/questions/47402/
21 votes
string.split(' ').reverse().join(' ')
6 votes
Utilise de la mémoire supplémentaire
0 votes
Comme le dit KodeSeeker, la solution zzzzBov crée plusieurs tampons intermédiaires. En outre, si la plate-forme de votre choix utilise des chaînes "inmutables" (comme .NET), vous créez certainement de l'espace supplémentaire, ce qui mérite d'être mentionné dans l'entretien.