Problem:

A string S consisting of N characters is considered to be properly nested if any of the following conditions is true:

S is empty;

S has the form “(U)” or “[U]” or “{U}” where U is a properly nested string;

S has the form “VW” where V and W are properly nested strings.

For example, the string “{[()()]}” is properly nested but “([)()]” is not.

Write a function:

int solution(char *S);

that, given a string S consisting of N characters, returns 1 if S is properly nested and 0 otherwise.

For example, given S = “{[()()]}”, the function should return 1 and given S = “([)()]”, the function should return 0, as explained above.

Assume that:

N is an integer within the range [0..200,000];

string S consists only of the following characters: “(“, “{“, “[“, “]”, “}” and/or “)”.

Complexity:

expected worst-case time complexity is O(N);

expected worst-case space complexity is O(N) (not counting the storage required for input arguments).

**Solution of the Problem:**

private int characterSymmatry(String str){ Stack<Character> stack = new Stack<Character>(); for (int i = 0; i < str.length(); i++) { char characters = str.charAt(i); switch (characters) { case '{': stack.push(characters); break; case '[': stack.push(characters); break; case '(': stack.push(characters); break; case ')': if(!stack.isEmpty()){ char c= stack.pop(); if(c!='('){ return 0; } } break; case ']': if(!stack.isEmpty()){ char c2 = stack.pop(); if(c2!='['){ return 0; } } break; case '}': if(!stack.isEmpty()){ char c3 = stack.pop(); if(c3!='{'){ return 0; } } break; default: break; } } if(stack.isEmpty()){ return 1; } return 0; }

LinhDo you have any video of that? I’d like to find out some additional information.

AleneThere is certainly a lot to know about this subject. I like all of the points you’ve made.