-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHackerrankPsAlgorithms0038.java
More file actions
71 lines (57 loc) · 1.83 KB
/
HackerrankPsAlgorithms0038.java
File metadata and controls
71 lines (57 loc) · 1.83 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
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class HackerrankPsAlgorithms0038 {
// Append and Delete
// https://www.hackerrank.com/challenges/append-and-delete/problem?isFullScreen=true
// --- You need to fill this method ---
public static String appendAndDelete(String s, String t, int k) {
String result = appendAndContinue(s, t, k);
if (result.equals("No")) {
result = deleteAndContinue(s, t, k);
}
return result;
}
private static String appendAndContinue(String s, String t, int k) {
s += "_";
k -= 1;
if (k < 0) {
return "No";
} else if (k == 0) {
return s.length() == t.length() && t.startsWith(s.replace("_", "")) ? "Yes" : "No";
} else if (s.length() < t.length()) {
return appendAndContinue(s, t, k);
} else {
return "No";
}
}
private static String deleteAndContinue(String s, String t, int k) {
s = s.isEmpty() ? s : s.substring(0, s.length() - 1);
k -= 1;
if (k < 0) {
return "No";
} else if (k == 0) {
return s.length() == t.length() && s.startsWith(t) ? "Yes" : "No";
} else {
String result = deleteAndContinue(s, t, k);
if (result.equals("No")) {
return appendAndContinue(s, t, k);
}
return result;
}
}
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));
String s = bufferedReader.readLine();
String t = bufferedReader.readLine();
int k = Integer.parseInt(bufferedReader.readLine().trim());
String result = appendAndDelete(s, t, k);
bufferedWriter.write(result);
bufferedWriter.newLine();
bufferedReader.close();
bufferedWriter.close();
}
}