Omar GamalEldeen
has successfully completed the
Angular Development Cross Skilling Nanodegree program
offered by Udacity
Certificate link:
Omar GamalEldeen
has successfully completed the
Angular Development Cross Skilling Nanodegree program
offered by Udacity
Certificate link:
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.function.*;
import java.util.regex.*;
import java.util.stream.*;
import static java.util.stream.Collectors.joining;
import static java.util.stream.Collectors.toList;
class Result {
/*
* Complete the 'isBalanced' function below.
*
* The function is expected to return a STRING.
* The function accepts STRING s as parameter.
*/
public static String isBalanced(String s) {
// Write your code here
Stack<Character> stack = new Stack<Character>();
for(int i = 0; i < s.length(); i++){
if("{([".contains(s.charAt(i)+"")) stack.push(s.charAt(i));
else if(s.charAt(i) == ']'){
if(stack.isEmpty()) return "NO";
if(stack.peek() != '[') return "NO";
stack.pop();
}
else if(s.charAt(i) == '}'){
if(stack.isEmpty()) return "NO";
if(stack.peek() != '{') return "NO";
stack.pop();
}
else if(s.charAt(i) == ')'){
if(stack.isEmpty()) return "NO";
if(stack.peek() != '(') return "NO";
stack.pop();
}
}
if(!stack.isEmpty()) return "NO";
return "YES";
}
}
public class Solution {
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")));
int t = Integer.parseInt(bufferedReader.readLine().trim());
IntStream.range(0, t).forEach(tItr -> {
try {
String s = bufferedReader.readLine();
String result = Result.isBalanced(s);
bufferedWriter.write(result);
bufferedWriter.newLine();
} catch (IOException ex) {
throw new RuntimeException(ex);
}
});
bufferedReader.close();
bufferedWriter.close();
}
}
import java.io.*;
import java.math.*;
import java.security.*;
import java.text.*;
import java.util.*;
import java.util.concurrent.*;
import java.util.regex.*;
public class Solution {
static class SinglyLinkedListNode {
public int data;
public SinglyLinkedListNode next;
public SinglyLinkedListNode(int nodeData) {
this.data = nodeData;
this.next = null;
}
}
static class SinglyLinkedList {
public SinglyLinkedListNode head;
public SinglyLinkedListNode tail;
public SinglyLinkedList() {
this.head = null;
this.tail = null;
}
public void insertNode(int nodeData) {
SinglyLinkedListNode node = new SinglyLinkedListNode(nodeData);
if (this.head == null) {
this.head = node;
} else {
this.tail.next = node;
}
this.tail = node;
}
}
public static void printSinglyLinkedList(SinglyLinkedListNode node, String sep, BufferedWriter bufferedWriter) throws IOException {
while (node != null) {
bufferedWriter.write(String.valueOf(node.data));
node = node.next;
if (node != null) {
bufferedWriter.write(sep);
}
}
}
// Complete the mergeLists function below.
/*
* For your reference:
*
* SinglyLinkedListNode {
* int data;
* SinglyLinkedListNode next;
* }
*
*/
static SinglyLinkedListNode mergeLists(SinglyLinkedListNode head1, SinglyLinkedListNode head2) {
SinglyLinkedListNode out;
if(head1.data <= head2.data){
out = new SinglyLinkedListNode(head1.data);
head1 = head1.next;
}else{
out = new SinglyLinkedListNode(head2.data);
head2 = head2.next;
}
SinglyLinkedListNode last = out;
while(head1 != null || head2 != null){
if(head1 == null){
last.next = head2;
last = last.next;
head2 = head2.next;
}else if( head2 == null){
last.next = head1;
last = last.next;
head1 = head1.next;
}
else if(head1.data <= head2.data){
last.next = head1;
last = last.next;
head1 = head1.next;
}else if(head1.data > head2.data){
last.next = head2;
last = last.next;
head2 = head2.next;
}
}
return out;
}
private static final Scanner scanner = new Scanner(System.in);
Omar GamalEldeen
has successfully completed the
React Development Cross-Skilling Nanodegree program
offered by Udacity
Certificate link:
https://graduation.udacity.com/api/graduation/certificate/ELYYJJLK/download
1971. Find if Path Exists in Graph
class Solution {
public boolean validPath(int n, int[][] edges, int source, int destination) {
if(source == destination) return true;
Graph g = new Graph(n);
for(int i = 0 ; i < edges.length; i++){
g.addEdge(edges[i][0],edges[i][1]);
g.addEdge(edges[i][1],edges[i][0]);
}
boolean[] visited = new boolean[n];
Queue<Integer> q = new LinkedList<Integer>();
q.add(source);
visited[source] =true;
while(!q.isEmpty()){
int current = q.poll();
Iterator<Integer> i = g.adj[current].listIterator();
while (i.hasNext())
{
int next = i.next();
if(next == destination) return true;
if (!visited[next])
{
visited[next] = true;
q.add(next);
}
}
}
return false;
}
class Graph
{
private int V; // No. of vertices
private LinkedList<Integer> adj[]; //Adjacency Lists
// Constructor
Graph(int v)
{
V = v;
adj = new LinkedList[v];
for (int i=0; i<v; ++i)
adj[i] = new LinkedList();
}
// Function to add an edge into the graph
void addEdge(int v,int w)
{
adj[v].add(w);
}
}
}
class Solution {
public int[] shuffle(int[] nums, int n) {
int[] out = new int[nums.length];
int x =0;
int y = nums.length/2;
for(int i = 0; i < nums.length; i++){
if(i % 2 == 0){
out[i] = nums[x];
x++;
}else{
out[i] = nums[y];
y++;
}
}
return out;
}
}
122. Best Time to Buy and Sell Stock II
class Solution {
public int maxProfit(int[] prices) {
int profit = 0;
for (int i = 0; i < prices.length-1; i++){
if(prices[i+1] > prices[i]) profit+= (prices[i+1] - prices[i]);
}
return profit;
}
}
class Solution {
public int maxArea(int[] height) {
int maxArea = Integer.MIN_VALUE;
int l = 0;
int r = height.length - 1;
while(l < r){
maxArea = Integer.max(maxArea, Integer.min(height[l],height[r])*(r-l));
if(height[l] < height[r]) l++;
else r--;
}
return maxArea;
}
}
Dynamic Programming
class Solution {
public int uniquePaths(int m, int n) {
if(n ==1 && m ==1) return 1;
int[][] grid = new int[m][n];
for(int i = 1; i <m; i++){
grid[i][0] = 1;
}
for(int i = 1; i < n; i++){
grid[0][i] = 1;
}
for(int i = 1; i < m; i++){
for(int j = 1; j < n; j++){
grid[i][j] =grid[i-1][j] + grid[i][j-1];
}
}
return grid[m-1][n-1];
}
}