Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.lang.String;
- import java.util.*;
- public class Main {
- public static void main(String[] args) {
- Set<String> ans = new HashSet<String>();
- String ss = new String("())())");
- int n = ss.length();
- char[] s = ss.toCharArray();
- int mn = 100000;
- for (int mask = 0; mask < (1 << n); mask++)
- {
- String t = new String();
- t = "";
- ArrayList<Integer> er = new ArrayList<>();
- for (int i = 0; i < n; i++) {
- if ((s[i] == '(' || s[i] == ')') && (((mask >> i) & 1) != 0))
- er.add(i);
- }
- Collections.reverse(er); //reverse(er.begin(), er.end());
- int er_cnt = er.size();
- for (int i = 0; i < n; i++)
- if (!er.isEmpty() && er.get(er.size()) == i)
- er.remove(er.size());
- else
- t += s[i];
- int cur = 0;
- boolean ok = true;
- for (int i = 0; i < t.length(); i++)
- {
- if (t.charAt(i) == '(') cur++;
- else if (t.charAt(i) == ')') cur--;
- ok &= (cur >= 0);
- }
- ok &= (cur == 0);
- //if (er_cnt == 2 && ok) cout << t << endl;
- if (ok)
- if (er_cnt == mn)
- ans.add(t);
- else if (er_cnt < mn)
- {
- ans.clear();
- mn = er_cnt;
- ans.add(t);
- }
- }
- Iterator iter = ans.iterator();
- while (iter.hasNext()) {
- System.out.println(iter.next());
- }
- System.out.println("lol");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement