DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
Winning Camp Worksheet (Java)
Day: 18
Name : Saurav Singha UID : 21BCS5421
Subject : Java Section : SC-904 (B)
Date : 15/06/2024
Problem 1: Remove K digit
Solution:
class Solution {
public String removeKdigits(String num, int k) {
Deque<Character> stack = new LinkedList<>();
for (Character c : [Link]()) {
while (![Link]() && [Link]() > c && k > 0) {
[Link]();
k--;
}
[Link](c);
}
// Remove leading zeros
while (![Link]() && [Link]() == '0') {
[Link]();
}
// Remove remaining digits if k > 0
while (![Link]() && k > 0) {
[Link]();
k--;
}
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
// Construct the result from the stack
StringBuilder result = new StringBuilder();
while (![Link]()) {
[Link]([Link]());
}
return [Link]() ? "0" : [Link]();
}
}
Output:
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
Problem 2: String Compression
Solution:
class Solution {
public int compress(char[] chars) {
int i = 1;
int ans = 0;
int count = 1;
char v = chars[0];
while (i < [Link]) {
if (v == chars[i]) {
count++;
} else {
chars[ans++] = chars[i - 1];
if (count > 1) {
String str = [Link](count);
for (char digit : [Link]()) {
chars[ans++] = digit;
}
}
v = chars[i];
count = 1;
}
i++;
}
chars[ans++] = chars[i - 1];
if (count > 1) {
String str = [Link](count);
for (char digit : [Link]()) {
chars[ans++] = digit;
}
}
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
return ans;
}
}
Output:
Problem 3: Occurrence after bigram
Solution:
class Solution {
public String[] findOcurrences(String text, String first, String second) {
String[] st = [Link](" ");
List<String> l = new ArrayList<String>();
int i = 0, n = [Link];
while (i < n) {
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
if (st[i].equals(first)) {
if (i + 1 < n - 1 && st[i + 1].equals(second)) {
[Link](st[i + 2]);
}
}
i++;
}
return [Link](new String[0]);
}
}
Output:
DEPARTMENT OF
COMPUTER SCIENCE & ENGINEERING
Problem 4: Trapping rain water
Solution:
class Solution {
public int trap(int[] height) {
int i = 0, left_max = height[0], sum = 0;
int j = [Link] - 1, right_max = height[j];
while (i < j) {
if (left_max <= right_max) {
sum += (left_max - height[i]);
i++;
left_max = [Link](left_max, height[i]);
} else {
sum += (right_max - height[j]);
j--;
right_max = [Link](right_max, height[j]);
}}
return sum;
}
}
Output: