regex - Javascript - Add missing parentheses in string -


यह मेरा कोड है:

  फ़ंक्शन पार्स (str) {var p = [str .split ("("।) लंबाई - 1, str.split (")")। लंबाई - 1]; अगर (पी [0] & gt; पी [1]) {के लिए (var i = 0; i & lt; (पी [0] - पी [1]); i ++) {str + = ")"; }} वापसी स्ट्रिंग; }  

यह गुम होने पर स्ट्रिंग के अंत में कोष्ठक जोड़ता है।

उदाहरण:

  "(asd) s "- & gt;" ((एडी) एस) "" ((एसएस) 123 "- & gt;" ((एसएस) 123)) " 

मैं यह काम कैसे कर सकता हूं शुरुआत कोष्ठक के रूप में भी?

पसंद करें:

  "))" - & gt; "(())" ") 123))" - & gt; "() () (123))"  

यहाँ एक साधारण स्टैक आधारित दृष्टिकोण है । पूर्ण JSFiddle नीचे और साथ ही पुष्टि किए गए परीक्षण मामलों की सूची है।

  फ़ंक्शन पेर्स {var missOpen = 0, stack = new array (); (I = 0; i & lt; s.length; i ++) {यदि (एस [i] == '(') {stack.push (s [i]);} और अगर (एस [i] == ' ) ') {If (! Stack.pop ()) missOpen ++; }} वापसी आरे (missOpen + 1) .जोइंड ('(') + s + अर्रे (स्टैक.लांबि + 1) .जोइंड (')'); पुष्टि के मामलों:  
  // लक्ष्य: अपेक्षित var मामले = {'()': '()', ') (': (): '(': '()', ')': '()', 'यह) (है)) एक ((परीक्षण)': '((यह) (है)) एक ( (ए) ':' (ए) ',' ए '(': '() ए ()'};  

< P> जैसा कि एक टिप्पणी द्वारा नोट किया गया है, यहां सरणी के बिना एक संस्करण है। यह सबसे प्रभावी तरीका होना चाहिए। सभी परीक्षण के मामलों को पारित किया गया है।

  फ़ंक्शन पेर्स {var missOpen = 0, missClosed = 0; (i = 0; i & lt; s.length; i ++) {यदि (एस [i] == '(') {missClosed ++;} और यदि (एस [i] == ')' ) (अगर (missClosed & gt; 0) मिस्डक्लाटेड -; और चूक गए ओपन ++;}} वापस आरे (missOpen + 1) .जोइंड ('(') + s + अर्रे (मिस्डक्लाज़ + 1) .जोइंड (')');}  

Comments