# 394-Decode String ###### tags: `Medium` ## Question https://leetcode.com/problems/decode-string/ ## Key ## Reference ## Solution ```cpp= string decodeString(string s) { string res; int num = 0; stack<int> stackInt; stack<string> stackStr; for(char c : s) { if(c == '[') { stackInt.push(num); num = 0; // reset the times stackStr.push(res); res = ""; } else if(c == ']') { int times = stackInt.top(); stackInt.pop(); for(int i = 0; i < times; i++) { stackStr.top() += res; } res = stackStr.top(); stackStr.pop(); } else if(c >= '0' && c <= '9') { num = num * 10 + c - '0'; //transfer string to integer } else //when c is a char { res = res + c; } } return res; } ``` ### DFS SOL. ```cpp= boolean DFS(int root, int target) { Set<Node> visited; Stack<Node> s; add root to s; while (s is not empty) { Node cur = the top element in s; return true if cur is target; for (Node next : the neighbors of cur) { if (next is not in visited) { add next to s; add next to visited; } } remove cur from s; } return false; } ```