Day 27 of LeetCode Challenge

Cloud and DevOps Engineer with hands-on expertise in AWS, CI/CD pipelines, Docker, Kubernetes, and Monitoring tools. Adept at building and automating scalable, fault-tolerant cloud infrastructures, and consistently improving system performance, security, and reliability in dynamic environments.
Problem 1: Palindrome Number
Link to the problem: https://leetcode.com/problems/palindrome-number/

class Solution {
public boolean isPalindrome(int x) {
StringBuilder sb = new StringBuilder(Integer.toString(x));
System.out.println(sb+" "+sb.reverse());
return sb.toString().equals(sb.reverse().toString())?true:false;
}
}
Problem 2: Reverse Bits
Link to the problem: https://leetcode.com/problems/reverse-bits/

public class Solution {
public int reverseBits(int n) {
int result = 0;
for (int i = 0; i < 32; i++) {
int bit = n & 1;
result = (result << 1) | bit;
n = n >>> 1;
}
return result;
}
}
Problem 3: Maximum Subarray
Link to the problem: leetcode.com/problems/maximum-subarray/

class Solution {
public int maxSubArray(int[] nums) {
int sum = 0;
int maxSum = nums[0];
for(int num : nums){
sum += num;
maxSum = sum > maxSum ? sum : maxSum;
if(sum < 0){
sum = 0;
}
}
return maxSum;
}
}
Problem 4: Find the original String II
Link to the problem: https://leetcode.com/problems/find-the-original-typed-string-ii/

public class Solution {
private static final int MOD = (int)1e9 + 7;
public int possibleStringCount(String word, int k) {
if (word.isEmpty()) return 0;
List<Integer> groups = new ArrayList<>();
int count = 1;
for (int i = 1; i < word.length(); i++) {
if (word.charAt(i) == word.charAt(i - 1)) count++;
else {
groups.add(count);
count = 1;
}
}
groups.add(count);
long total = 1;
for (int num : groups) total = (total * num) % MOD;
if (k <= groups.size()) return (int)total;
int[] dp = new int[k];
dp[0] = 1;
for (int num : groups) {
int[] newDp = new int[k];
long sum = 0;
for (int s = 0; s < k; s++) {
if (s > 0) sum = (sum + dp[s - 1]) % MOD;
if (s > num) sum = (sum - dp[s - num - 1] + MOD) % MOD;
newDp[s] = (int)sum;
}
dp = newDp;
}
long invalid = 0;
for (int s = groups.size(); s < k; s++) invalid = (invalid + dp[s]) % MOD;
return (int)((total - invalid + MOD) % MOD);
}
}
Problem 5: Insert Interval
Link to the problem: https://leetcode.com/problems/insert-interval/

class Solution {
public int[][] insert(int[][] intervals, int[] newInterval) {
List<int[]> res = new ArrayList<>();
for (int i = 0; i < intervals.length; i++) {
if(intervals[i][0] > newInterval[1]) {
res.add(newInterval);
while(i < intervals.length)
res.add(intervals[i++]);
return res.toArray(new int[res.size()][]);
}else if(intervals[i][1] < newInterval[0]) {
res.add(intervals[i]);
}else{
newInterval[0] = Math.min(newInterval[0], intervals[i][0]);
newInterval[1] = Math.max(newInterval[1], intervals[i][1]);
}
}
res.add(newInterval);
return res.toArray(new int[res.size()][]);
}
}




