URI Online Judge | 1607
Timelimit: 1
Avance as Letras
Por Bruno Adami, Universidade de São Paulo - São Carlos
Brazil
Brazil
É dado na entrada uma string A e outra B. Em uma operação você pode escolher uma letra da primeira string e avançar esta letra. Avançar uma letra significa transformá-la na próxima letra do alfabeto, veja que a próxima letra depois de z vem a letra a novamente!
Por exemplo, podemos transformar a string ab em bd em no mínimo 3 operações: ab -> bb -> bc -> bd. Podemos aplicar operações nas letras em qualquer ordem, outra possibilidade seria: ab -> ac -> bc -> bd.
Dadas as duas strings, calcule o mínimo número de operações necessárias para transformar a primeira na segunda.
Entrada
Na primeira linha terá um inteiro T (T ≤ 100) indicando o número de casos de teste.
Para cada caso, na única linha teremos as duas strings A (1 ≤ |A| ≤ 100* ou 1 ≤ |A| ≤ 104** - sendo que |A| significa o tamanho da string A) e B (|B| = |A|* ou |B| = |A|**) separadas por um espaço. Ambas as strings são compostas por letras do alfabeto minúsculas apenas e são do mesmo tamanho.
*Ocorre em aproximadamente 90% dos casos de teste;
**Ocorre nos demais casos de teste.
Saída
Para cada caso imprima o número mínimo de operações.
import java.io.*;
public class Main{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException{
String entrada = br.readLine();
String[] str;
int n = Integer.parseInt(entrada), len, a, b, trocas;
while(n-- > 0){
trocas = 0;
entrada = br.readLine();
str = entrada.split(" ");
len = str[1].length();
for(int i = 0; i < len; i++){
a = (int) str[0].charAt(i);
b = (int) str[1].charAt(i);
if (b > a) {
trocas += b - a;
} else if(a > b){
trocas += 26 - a + b;
}
}
System.out.println(trocas);
}
}
}
public class Main{
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
public static void main(String[] args) throws IOException{
String entrada = br.readLine();
String[] str;
int n = Integer.parseInt(entrada), len, a, b, trocas;
while(n-- > 0){
trocas = 0;
entrada = br.readLine();
str = entrada.split(" ");
len = str[1].length();
for(int i = 0; i < len; i++){
a = (int) str[0].charAt(i);
b = (int) str[1].charAt(i);
if (b > a) {
trocas += b - a;
} else if(a > b){
trocas += 26 - a + b;
}
}
System.out.println(trocas);
}
}
}
Nenhum comentário:
Postar um comentário