Il y a deux façons de répondre. Le premier est un schéma de codage simple, où l'entrée cabc
donne c1 a1 b1 c1
. Ceci a l'avantage que vous pouvez souvent les choses de sortie immédiatement avec une exigence de mémoire assez faible pour démarrer:
input-string := Get-Input
(* nil is the representation of no characters here. *)
last-char := nil
count := 0
For Each (char c) In input-string
If c = last-char Then
count := count + 1
Else
If last-char = nil Then
count := 1
last-char := c
Else
Display last-char, count
count := 1
last-char := c
End If
End If
Loop
If count != 0 Then
Display last-char, count
End If
L'autre solution que je concevais préservera l'ordre et déterminer les comptes de toutes les lettres uniques dans la chaîne, ce qui donne c2 a1 b1
pour une entrée de cabc
. Cette solution est un peu plus complexe et nécessite plus de mémoire et souvent plus de temps d'exécution, mais il en résulte une sortie plus compacte en raison de l'absence de lettres répétées:
input-string := Get-Input
(* 26 is the number of letters a-z. *)
counts := Create-Array 26
order-string := ""
For Each (char c) In input-string
i := Locate-Char order-string, c
If i = 0 Then
order-string := order-string + c
counts [Length order-string] := 1
Else
counts [i] := counts [i] + 1
End If
Loop
For i := 1 To (Length order-string)
Display (Char-At order-string, i), counts [i]
Loop
Le premier devrait être facile à convertir en QBASIC, mais Vous devrez peut-être utiliser le fichier d'aide pour en savoir plus sur le mot clé DIM
et sur la façon de l'utiliser pour créer un tableau. Cet algorithme suppose que les tableaux commencent à 1, et non à 0.
Pouvez-vous reformuler votre question? C'est assez difficile à comprendre. –
question est facile à comprendre- Entrée: bbinnod puis la sortie doit être au format: b2i1n2o1 –
@BododThakur, ce n'est pas à vous de dire aux gens que votre question est facile à comprendre. Si quelqu'un vous demande d'expliquer votre question mieux, juste pour cela. –