Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Javascript

जावास्क्रिप्ट में डुप्लिकेट वर्ण घटना को एक बार तक सीमित करना

<घंटा/>

समस्या

हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक स्ट्रिंग, str को एकमात्र तर्क के रूप में लेता है।

फ़ंक्शन को इनपुट स्ट्रिंग के आधार पर एक नई स्ट्रिंग तैयार करनी चाहिए जिसमें प्रत्येक वर्ण का केवल एक ही रूप रखा जाता है और रखा गया वर्ण वह होता है जो परिणाम स्ट्रिंग को लेक्सिकोग्राफ़िक रूप से सबसे छोटा बनाता है।

उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -

const str = 'cbacdcbc';

तब आउटपुट होना चाहिए -

const output = 'acdb';

आउटपुट स्पष्टीकरण:

ध्यान दें कि हम स्ट्रिंग से 'सी' की किसी भी घटना को हटा सकते थे लेकिन हमने सबसे पहले हटा दिया, जो 'ए' और 'बी' के मामले में स्ट्रिंग को सबसे छोटा और समान बनाता है।

उदाहरण

इसके लिए कोड होगा -

const str = 'cbacdcbc';
const removeDuplicates = (str = '') => {
   if (str.length <= 1) {
      return str;
   };
   let flag;
   let string = "";
   let legend = new Array(26).fill(-1 let last = "z";
   let ind = 0;
   for (let i = str.length - 1; i > -1; i--) {
      const element = str[i];
      if (legend[element.charCodeAt() - 97] < 0) {
         legend[element.charCodeAt() - 97] = i;
         last = element;
         ind = i;
         string += element;
      } else {
         if (last >= element) {
            last = element;
            ind = i;
         }
      }
   }
   let finalStr = last;
   while (string.length > finalStr.length) {
      legend.fill(-1);
      for (let i = str.length - 1; i > ind; i--) {
         const element = str[i];
         if (finalStr.indexOf(element) < 0) {
            if (legend[element.charCodeAt() - 97] < 0) {
               legend[element.charCodeAt() - 97] = i;
               last = element;
               flag = i;
            } else {
               if (last >= element) {
                  last = element;
                  flag = i;
               }
            }
         }
      }
      ind = flag;
      finalStr += last;
   }
   return finalStr;
};
console.log(removeDuplicates(str));

कोड स्पष्टीकरण:

यहाँ विचार है -

पहली बार, हम पूरी स्ट्रिंग के माध्यम से यह जांचने के लिए लूप करते हैं कि कौन से अक्षरों का उपयोग किया गया है, और सबसे छोटा प्रारंभिक अक्षर सबस्ट्रिंग खोजें जिसमें सभी वर्ण हों।

यह समझना आसान है अगर हम लूप को दाएं से बाएं शुरू करते हैं और सबस्ट्रिंग की शुरुआती स्थिति और शुरुआत के न्यूनतम अक्षर को याद करते हैं।

फिर हम सबस्ट्रिंग को लूप करना शुरू करते हैं (शुरुआत में न्यूनतम अक्षर के बिना), फिर भी दाएं से बाएं, लेकिन इस बार हमें उन अक्षरों को अनदेखा करना होगा जिन्हें हमने पहले ही संग्रहीत कर लिया है।

आउटपुट

और कंसोल में आउटपुट होगा -

acdb

  1. जावास्क्रिप्ट में स्ट्रिंग को एक निर्दिष्ट लंबाई तक सीमित करना

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखना है जो एक स्ट्रिंग और एक संख्या लेता है। यदि परिणाम मूल स्ट्रिंग से छोटा है, तो हमारे फ़ंक्शन को दी गई स्ट्रिंग के छोटे संस्करण को दी गई सीमा तक ... के बाद वापस करना चाहिए अन्यथा हमारे फ़ंक्शन को उसी स्ट्रिंग को वापस करना चाहिए यदि कुछ भी छोटा नहीं किया गया

  1. जावास्क्रिप्ट में वर्ण आवृत्ति के आधार पर एन्कोडिंग स्ट्रिंग

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक स्ट्रिंग, str को पहले और एकमात्र तर्क के रूप में लेता है। हमारे फ़ंक्शन को इनपुट स्ट्रिंग के आधार पर एक नई स्ट्रिंग बनानी चाहिए जहां नई स्ट्रिंग में प्रत्येक वर्ण ( यदि वह वर्ण मूल स्ट्रिंग में केवल एक बार दिखाई देता है, या ) यदि वह व

  1. जावास्क्रिप्ट में तत्वों की घटनाओं को n बार सीमित करना

    समस्या हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो पूर्णांकों की एक सरणी लेता है, गिरफ्तारी, जिसमें पहले तर्क के रूप में डुप्लिकेट हो सकते हैं, और एक संख्या, संख्या, दूसरे और अंतिम तर्क के रूप में हो सकती है। हमारे फ़ंक्शन का कार्य सरणी के माध्यम से पुनरावृति करना और यह जांचना है कि क्या