Questa è una domanda di intervista.Riordina una stringa della metà del carattere
Data una stringa come: 123456abcdef costituita da n/2 numeri interi seguiti da n/2 caratteri. Riordina la stringa da contenere come 1a2b3c4d5e6f. L'algoritmo dovrebbe essere sul posto.
La soluzione che ho dato era banale - O (n^2). Basta spostare i personaggi di n/2 posti a sinistra.
Ho provato a utilizzare la ricorsione come -
a. Swap dopo la metà del primo semestre con la metà precedente della 2a parte - es.
123 456 abc def
123 abc 456 def
b. Recurse su due metà.
Il pbm che ho bloccato è che lo scambio varia con il numero di elementi - per es.
Cosa fare dopo? 123 abc 12AB 3c
e cosa fare per: 12345 ABCDE 123abc 45ab
Questa è una domanda piuttosto vecchio e potrebbe essere un duplicato. Per favore fatemelo sapere .. :)
Un altro esempio: Ingresso: 38726zfgsa uscita: 3z8f7g2s6a
Che dire '6' e' f'? Non dovrebbe essere '1a2b3c4d5e6f'? – Gumbo
O sì !! Il mio errore .. Modifica ... – letsc
I caratteri saranno sempre le prime n/2 lettere dell'alfabeto ei numeri saranno compresi nell'intervallo [1, n/2]? Inoltre, cosa succede quando n/2> = 10, come è necessario gestire numeri a più caratteri come "10", "11", ..? – MAK