-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHolidayCode7.java
More file actions
99 lines (78 loc) · 2.78 KB
/
HolidayCode7.java
File metadata and controls
99 lines (78 loc) · 2.78 KB
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
97
98
99
import java.io.*;
import java.util.*;
public class HolidayCode7 {
public static void main(String[] args){
try{
File file = new File("IPList.txt");
FileReader fileReader = new FileReader(file);
BufferedReader input = new BufferedReader(fileReader);
String line;
int total = 0;
while((line = input.readLine()) != null){
//Assuming all have [] sequences
ArrayList<String> lookForIn = new ArrayList<String>();
ArrayList<String> lookForOut = new ArrayList<String>();
boolean valid = false;
boolean inside = false;
String charString = "";
for(int i = 0; i < line.length(); i++){
char current = line.charAt(i);
if(current == '['){
inside = true;
charString = "";
continue;
} else if (current == ']'){
inside = false;
charString = "";
continue;
}
//We know it's not an open or close. Do stuff
charString += Character.toString(current);
if(charString.length() > 3){
charString = charString.substring(1);
}
if (charString.length() < 3){
continue; //Can do nothing
} else {
String first = charString.substring(0, 2);
String second = charString.substring(1);
String reverseSecond = Character.toString(second.charAt(1));
reverseSecond += Character.toString(second.charAt(0));
if(first.charAt(0) == first.charAt(1)){
//Same character. Continue
continue;
}
if(reverseSecond.equals(first)){
//We have an ABA string.
String inverse = second;
inverse += Character.toString(inverse.charAt(0));
//System.out.println(charString);
//System.out.println(inverse);
if(inside){
if(lookForIn.contains(charString)){
valid = true;
continue;
} else {
lookForOut.add(inverse);
}
} else {
if(lookForOut.contains(charString)){
valid = true;
continue;
} else {
lookForIn.add(inverse);
}
}
}
}
}
if(valid){
total++;
}
}
System.out.println(total);
} catch (IOException error) { //Need this for using buffered readers
error.printStackTrace();
}
}
}