-
Notifications
You must be signed in to change notification settings - Fork 15
/
p102.java
96 lines (70 loc) · 2.46 KB
/
p102.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
import java.util.*;
public class p102 {
private static int getNumVocales(String str) {
int cont = 0;
str = str.toLowerCase();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (Character.isLetter(c)) {
if (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u') {
cont++;
}
}
}
return cont;
}
private static String descodificar(String codificada, int desplazamiento) {
String decodificada = "";
int letterValue;
char c, newLetter;
for (int i = 1; i < codificada.length(); i++) {
c = Character.toLowerCase(codificada.charAt(i));
if (Character.isLetter(c)) {
letterValue = c + desplazamiento;
if (letterValue < 97) {
letterValue = 123 - (97 - letterValue);
}
else if (letterValue > 122) {
letterValue = 96 + (letterValue - 122);
}
newLetter = (char)letterValue;
if (Character.isUpperCase(codificada.charAt(i))) {
newLetter = Character.toUpperCase(newLetter);
}
decodificada += newLetter;
}
else {
decodificada += c;
}
}
return decodificada;
}
private static int calcularDesplazamiento(char codigo) {
codigo = Character.toLowerCase(codigo);
int left = (codigo < 'p')
? -((codigo - 'a') + (123 - 'p'))
: -(codigo - 'p');
int right = (codigo > 'p')
? (('z' - codigo) + ('p' - 96))
: ('p' - codigo);
return (Math.abs(left) <= right) ? left : right;
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
boolean keep = true;
String codificada, decodificada;
int desplazamiento, vocales;
while (keep) {
codificada = s.nextLine();
desplazamiento = calcularDesplazamiento(codificada.charAt(0));
decodificada = descodificar(codificada, desplazamiento);
if (decodificada.equals("FIN")) {
keep = false;
}
else {
vocales = getNumVocales( decodificada );
System.out.println( vocales );
}
}
}
}