Tenemos un lenguaje X, que tiene un byte y dos caracteres de byte. Este lenguaje tiene las siguientes características.Pregunta de entrevista: ¿Encontrar caracteres Siguiente y Anterior en una cadena dada?
- valor de caracteres de un solo byte será siempre menor o igual a 127.
- En dos caracteres de bytes, Primer byte será siempre mayor que 127 bytes y el segundo valor puede ser cualquier cosa.
El problema es que tenemos una cadena de longitud arbitraria y un puntero apuntando a un byte en la cadena y tenemos que averiguar cuál es el carácter anterior y cuál es el siguiente carácter.
Un enfoque simple se iniciará desde el comienzo de la cadena, verificando el valor del byte y comparando los punteros hasta que lleguemos al puntero dado. Pero en el peor de los casos, si el puntero dado apunta al último byte en la cadena dada, tenemos que recorrer todos los charaters.
Me gustaría saber si hay algún algoritmo mejor que dé el resultado en tiempo constante independientemente de la longitud de la cadena?
Menos de 127? ¿No te refieres a "Menos o igual a 127"? –
Sí, tiene razón – raj
Título alternativo: ¿Por qué UTF-8 es mejor que shift-jis;). –