From 240689cf3dec420ca8929d3c615be98e151481d5 Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 4 Oct 2017 17:01:05 +0300 Subject: [PATCH 1/3] Task8 --- .../javacourses2016/task8/SolverTask8.java | 47 ++++++++++++++++++- 1 file changed, 45 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java b/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java index 46a0bfe..a76e3cf 100644 --- a/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java +++ b/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java @@ -10,12 +10,55 @@ public class SolverTask8 { /** * Проверяет правильность расстановки скобок. * Правильная расстановка: - * 1) Каждой открывающей скобке соответствует закрывающая того же типа. - * 2) Нет пересечения областей, обрамленных скобками. + * 1) Каждой открывающей скобке соответствует закрывающая того же типа. + * 2) Нет пересечения областей, обрамленных скобками. + * * @param string Анализируемая строка. * @return true - скобки расставлены верно, иначе - false. */ public boolean isNormalBrackets(String string) { + Stack st = new Stack<>(); + char charr[] = str.toCharArray(); + String tmp = Character.toString(charr[0]); + for (int i = 0; i < charr.length; i++) { + + st.push(Character.toString(charr[i])); + switch (tmp) { + case "(": + if (st.peek().equals(")")) { + st.pop(); + st.pop(); + } + break; + case "{": + if (st.peek().equals("}")) { + st.pop(); + st.pop(); + } + break; + case "[": + if (st.peek().equals("]")) { + st.pop(); + st.pop(); + } + break; + + default: + + break; + + } + if (!st.empty()) { + tmp = st.peek(); + } else { + tmp = null; + } + } + if (st.empty()) { + return true; + } return false; + } } + From e4486ff1e06c3a872e09d08154cca43e73406c4d Mon Sep 17 00:00:00 2001 From: Kirill Date: Wed, 4 Oct 2017 17:07:44 +0300 Subject: [PATCH 2/3] Task9 --- .../com/epam/javacourses2016/task9/SolverTask9.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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; + } + } } From f9cb269e0c6c5f91869eede7b285a4be4a7fa0f2 Mon Sep 17 00:00:00 2001 From: Kirill Date: Sun, 8 Oct 2017 16:49:40 +0300 Subject: [PATCH 3/3] FixedTask8 --- .../javacourses2016/task8/SolverTask8.java | 91 ++++++++++++------- 1 file changed, 56 insertions(+), 35 deletions(-) diff --git a/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java b/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java index a76e3cf..5f743ba 100644 --- a/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java +++ b/src/main/java/com/epam/javacourses2016/task8/SolverTask8.java @@ -16,49 +16,70 @@ public class SolverTask8 { * @param string Анализируемая строка. * @return true - скобки расставлены верно, иначе - false. */ - public boolean isNormalBrackets(String string) { - Stack st = new Stack<>(); - char charr[] = str.toCharArray(); - String tmp = Character.toString(charr[0]); - for (int i = 0; i < charr.length; i++) { + private static boolean isOpenBrecket(char c) { + switch (c) { + case '(': + return true; + case '{': + return true; + case '[': + return true; + default: + return false; + } + } + - st.push(Character.toString(charr[i])); - switch (tmp) { - case "(": - if (st.peek().equals(")")) { - st.pop(); - st.pop(); - } - break; - case "{": - if (st.peek().equals("}")) { - st.pop(); - st.pop(); - } - break; - case "[": - if (st.peek().equals("]")) { - st.pop(); - st.pop(); - } - break; + 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; + } - break; + } else { + return false; + } + } - } - if (!st.empty()) { - tmp = st.peek(); - } else { - tmp = null; + 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); } } - if (st.empty()) { - return true; + 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 false; - + return stc.isEmpty(); } }