Skip to content

Commit 3a19a46

Browse files
committed
Learning on hexlet.
1 parent 5985b13 commit 3a19a46

14 files changed

Lines changed: 1053 additions & 0 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package ru.frechman.exercises.algo.chapter_1;
2+
3+
import java.util.Scanner;
4+
import java.util.Stack;
5+
6+
public class TaskCheckBrackets {
7+
private static String SUCCESS = "Success";
8+
9+
public static void main(String[] args) {
10+
Scanner sc = new Scanner(System.in);
11+
String str = sc.nextLine();
12+
System.out.println(checkBrackets(str));
13+
}
14+
15+
16+
static String checkBrackets(String str) {
17+
Stack<Character> stack = new Stack<>();
18+
Stack<Integer> num = new Stack<>();
19+
char[] arraySrt = str.toCharArray();
20+
21+
for (int i = 0; i < arraySrt.length; i++) {
22+
if (arraySrt[i] == '(' || arraySrt[i] == '[' || arraySrt[i] == '{') {
23+
stack.push(arraySrt[i]);
24+
num.push(i);
25+
}
26+
if (arraySrt[i] != ')' && arraySrt[i] != ']' && arraySrt[i] != '}') {
27+
continue;
28+
}
29+
if (stack.empty()) {
30+
return String.valueOf(i + 1);
31+
}
32+
char top = stack.pop();
33+
num.pop();
34+
if ((top == '(' && arraySrt[i] != ')')
35+
|| (top == '[' && arraySrt[i] != ']')
36+
|| (top == '{' && arraySrt[i] != '}')) {
37+
return String.valueOf(i + 1);
38+
}
39+
40+
}
41+
return stack.empty() ? SUCCESS : String.valueOf(num.pop() + 1);
42+
}
43+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package ru.frechman.exercises.algo.chapter_1;
2+
3+
import java.util.Arrays;
4+
import java.util.Scanner;
5+
6+
public class TaskHeightTree {
7+
public static void main(String[] args) {
8+
Scanner sc = new Scanner(System.in);
9+
int length = sc.nextInt();
10+
int[] arr = new int[length];
11+
12+
for (int i = 0; i < length; i++) {
13+
arr[i] = sc.nextInt();
14+
}
15+
16+
System.out.println(length);
17+
System.out.println(Arrays.toString(arr));
18+
}
19+
}
Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,135 @@
1+
package ru.frechman.exercises.hexlet.collections;
2+
3+
import java.util.Arrays;
4+
import java.util.Collection;
5+
import java.util.Iterator;
6+
7+
public class ArrayCollection<T> implements Collection<T> {
8+
9+
private T[] arr = (T[]) new Object[10];
10+
11+
public ArrayCollection() {
12+
}
13+
14+
private int size;
15+
16+
@Override
17+
public int size() {
18+
return size;
19+
}
20+
21+
@Override
22+
public boolean isEmpty() {
23+
return size() == 0;
24+
}
25+
26+
@Override
27+
public boolean contains(Object o) {
28+
for (int i = 0; i < size; i++) {
29+
if (arr[i].equals(o)) {
30+
return true;
31+
}
32+
}
33+
return false;
34+
}
35+
36+
@Override
37+
public Iterator<T> iterator() {
38+
return new ArrayIterator();
39+
}
40+
41+
@Override
42+
public Object[] toArray() {
43+
return Arrays.copyOf(arr, size);
44+
}
45+
46+
@Override
47+
public <T1> T1[] toArray(T1[] a) {
48+
Object[] newArr = new Object[size];
49+
System.arraycopy(arr, 0, newArr, 0, size);
50+
return (T1[]) newArr;
51+
}
52+
53+
@Override
54+
public boolean add(T t) {
55+
T[] oldArr = arr;
56+
if (arr.length == size) {
57+
arr = (T[]) new Object[size * 2];
58+
System.arraycopy(oldArr, 0, arr, 0, size);
59+
}
60+
arr[size++] = t;
61+
return true;
62+
}
63+
64+
@Override
65+
public boolean remove(Object o) {
66+
for (int i = size - 1; i >= 0; i--) {
67+
if (arr[i].equals(o)) {
68+
if (i != size - 1) {
69+
System.arraycopy(arr, i + 1, arr, i, size - i - 1);
70+
}
71+
size--;
72+
return true;
73+
}
74+
}
75+
return false;
76+
}
77+
78+
@Override
79+
public boolean containsAll(Collection<?> c) {
80+
for (Object o : c) {
81+
if (!contains(o)) {
82+
return false;
83+
}
84+
}
85+
return true;
86+
}
87+
88+
@Override
89+
public boolean addAll(Collection<? extends T> c) {
90+
for (T e : c) {
91+
this.add(e);
92+
}
93+
return true;
94+
}
95+
96+
@Override
97+
public boolean removeAll(Collection<?> c) {
98+
boolean result = false;
99+
for (Object o : c) {
100+
result = this.remove(o);
101+
}
102+
return result;
103+
}
104+
105+
@Override
106+
public boolean retainAll(Collection<?> c) {
107+
for (Object o : this) {
108+
if (!c.contains(o)) {
109+
this.remove(o);
110+
}
111+
}
112+
return true;
113+
}
114+
115+
@Override
116+
public void clear() {
117+
arr = (T[]) new Object[10];
118+
size = 0;
119+
}
120+
121+
private final class ArrayIterator implements Iterator<T> {
122+
123+
private int size;
124+
125+
@Override
126+
public boolean hasNext() {
127+
return ArrayCollection.this.size() > size;
128+
}
129+
130+
@Override
131+
public T next() {
132+
return ArrayCollection.this.arr[size++];
133+
}
134+
}
135+
}
Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
package ru.frechman.exercises.hexlet.collections;
2+
3+
import java.util.Collection;
4+
import java.util.Iterator;
5+
import java.util.List;
6+
import java.util.ListIterator;
7+
8+
public class LinkedListImpl<E> implements List<E> {
9+
10+
private Node<E> last;
11+
private Node<E> first;
12+
13+
private int size;
14+
15+
private static class Node<E> {
16+
E item;
17+
Node<E> next;
18+
Node<E> prev;
19+
20+
Node(E item, Node<E> next, Node<E> prev) {
21+
this.item = item;
22+
this.next = next;
23+
this.prev = prev;
24+
}
25+
}
26+
27+
@Override
28+
public int size() {
29+
return size;
30+
}
31+
32+
@Override
33+
public boolean isEmpty() {
34+
return size == 0;
35+
}
36+
37+
@Override
38+
public boolean contains(Object o) {
39+
return false;
40+
}
41+
42+
@Override
43+
public Iterator<E> iterator() {
44+
return new MyItrList();
45+
}
46+
47+
@Override
48+
public Object[] toArray() {
49+
return new Object[0];
50+
}
51+
52+
@Override
53+
public <T> T[] toArray(T[] a) {
54+
return null;
55+
}
56+
57+
@Override
58+
public boolean add(E e) {
59+
if (first == null) {
60+
first = new Node<>(e, null, last);
61+
last = first;
62+
}
63+
size++;
64+
return false;
65+
}
66+
67+
@Override
68+
public boolean remove(Object o) {
69+
return false;
70+
}
71+
72+
@Override
73+
public boolean containsAll(Collection<?> c) {
74+
return false;
75+
}
76+
77+
@Override
78+
public boolean addAll(Collection<? extends E> c) {
79+
return false;
80+
}
81+
82+
@Override
83+
public boolean addAll(int index, Collection<? extends E> c) {
84+
return false;
85+
}
86+
87+
@Override
88+
public boolean removeAll(Collection<?> c) {
89+
return false;
90+
}
91+
92+
@Override
93+
public boolean retainAll(Collection<?> c) {
94+
return false;
95+
}
96+
97+
@Override
98+
public void clear() {
99+
100+
}
101+
102+
@Override
103+
public E get(int index) {
104+
return null;
105+
}
106+
107+
@Override
108+
public E set(int index, E element) {
109+
return null;
110+
}
111+
112+
@Override
113+
public void add(int index, E element) {
114+
115+
}
116+
117+
@Override
118+
public E remove(int index) {
119+
return null;
120+
}
121+
122+
@Override
123+
public int indexOf(Object o) {
124+
return 0;
125+
}
126+
127+
@Override
128+
public int lastIndexOf(Object o) {
129+
return 0;
130+
}
131+
132+
@Override
133+
public ListIterator<E> listIterator() {
134+
return null;
135+
}
136+
137+
@Override
138+
public ListIterator<E> listIterator(int index) {
139+
return null;
140+
}
141+
142+
@Override
143+
public List<E> subList(int fromIndex, int toIndex) {
144+
return null;
145+
}
146+
147+
private final class MyItrList implements Iterator<E> {
148+
149+
private int size;
150+
151+
@Override
152+
public boolean hasNext() {
153+
return LinkedListImpl.this.size() > size;
154+
}
155+
156+
@Override
157+
public E next() {
158+
return first.next.item;
159+
}
160+
161+
@Override
162+
public void remove() {
163+
164+
}
165+
}
166+
}

0 commit comments

Comments
 (0)