diff --git a/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java b/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java index 46a0bfe..5f743ba 100644 --- a/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java +++ b/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java @@ -10,12 +10,76 @@ public class SolverTask8 { /** * Проверяет правильность расстановки скобок. * Правильная расстановка: - * 1) Каждой открывающей скобке соответствует закрывающая того же типа. - * 2) Нет пересечения областей, обрамленных скобками. + * 1) Каждой открывающей скобке соответствует закрывающая того же типа. + * 2) Нет пересечения областей, обрамленных скобками. + * * @param string Анализируемая строка. * @return true - скобки расставлены верно, иначе - false. */ - public boolean isNormalBrackets(String string) { - return false; + private static boolean isOpenBrecket(char c) { + switch (c) { + case '(': + return true; + case '{': + return true; + case '[': + return true; + default: + return false; + } + } + + + private static boolean isCloseBrecket(char c) { + switch (c) { + case ')': + return true; + case '}': + return true; + case ']': + return true; + default: + return false; + } + } + + private static boolean isNormalPairOfBrecket(char leftBr, char rightBr) { + if (isOpenBrecket(leftBr) && isCloseBrecket(rightBr)) { + switch (leftBr) { + case '[': + return rightBr == ']'; + case '{': + return rightBr == '}'; + case '(': + return rightBr == ')'; + default: + return false; + } + + } else { + return false; + } + } + + public static boolean isNormalBreckets(String st) { + Stack stc = new Stack<>(); + ArrayList arr = new ArrayList<>(); + for (char c : st.toCharArray()) { + if (isCloseBrecket(c) || isOpenBrecket(c)) { + arr.add(c); + } + } + for (int i = 0; i < arr.size(); i++) { + if (isOpenBrecket(arr.get(i))) { + stc.push(arr.get(i)); + } else if (stc.isEmpty()) { + stc.push(arr.get(i)); + break; + } else if(isNormalPairOfBrecket(stc.peek(),arr.get(i))){ + stc.pop(); + } + } + return stc.isEmpty(); } } + diff --git a/src/main/java/com/epam/javacourses2016/task9/SolverTask9.java b/src/main/java/com/epam/javacourses2016/task9/SolverTask9.java index 4702747..d8e952c 100644 --- a/src/main/java/com/epam/javacourses2016/task9/SolverTask9.java +++ b/src/main/java/com/epam/javacourses2016/task9/SolverTask9.java @@ -17,6 +17,15 @@ public class SolverTask9 { * @return Множество полученных слов. */ public HashSet getUniqueWords(File input) { - return null; + Scanner sc=new Scanner(input); + HashSet hs=new HashSet<>(); + while(sc.hasNextLine()){ + for(String str:sc.nextLine().split("\\s+")){ + hs.add(str.toLowerCase()); + } + } + return hs; + } + } }