कभी-कभी लोग अतिरिक्त भावना का प्रतिनिधित्व करने के लिए अक्षरों को दोहराते हैं, जैसे "हैलो" -> "हीलू", "हाय" -> "हईईआई"। "हीलू" जैसे इन स्ट्रिंग्स में, हमारे पास आसन्न अक्षरों के समूह हैं जो सभी समान हैं:"h", "eee", "ll", "ooo"।
कुछ दिए गए स्ट्रिंग S के लिए, एक क्वेरी शब्द स्ट्रेची होता है यदि इसे निम्नलिखित एक्सटेंशन ऑपरेशन के किसी भी एप्लिकेशन द्वारा S के बराबर बनाया जा सकता है:वर्ण c से युक्त समूह चुनें, और समूह में कुछ वर्ण c जोड़ें। ताकि समूह का आकार 3 या अधिक हो।
उदाहरण के लिए, "हैलो" से शुरू करते हुए, हम "हैलो" प्राप्त करने के लिए समूह "ओ" पर एक एक्सटेंशन कर सकते हैं, लेकिन हमें "हैलो" नहीं मिल सकता है क्योंकि समूह "ओओ" का आकार 3 से कम है। इसके अलावा, हम कर सकते हैं एक अन्य एक्सटेंशन जैसे "ll" −> "llllll" को "helllllooo" प्राप्त करने के लिए। यदि S ="helllllooo", तो क्वेरी शब्द "hello" इन दो एक्सटेंशन ऑपरेशनों के कारण खिंचाव वाला होगा:query ="hello" −> "hellooo" −> "helllllooo" =S.
क्वेरी शब्दों की एक सूची को देखते हुए, हमें उन शब्दों की संख्या लौटानी होगी जो खिंचाव वाले हैं।
उदाहरण के लिए -
यदि इनपुट स्ट्रिंग है -
const str = 'heeellooo';
और शब्दों की सूची है -
const words = ["hello", "hi", "helo"];
और आउटपुट होना चाहिए -
const output = 1
उदाहरण
इसके लिए कोड होगा -
const str = 'heeellooo'; const words = ["hello", "hi", "helo"]; const extraWords = (str, words) => { let count = 0; for (let w of words) { let i = 0; let j = 0; for (; i < str.length && j < w.length && w[j] === str[i];) { let lenS = 1; let lenW = 1; for (; i+lenS < str.length && str[i+lenS] === str[i]; lenS++); for (; j+lenW < w.length && w[j+lenW] === w[j]; lenW++); if (lenS < lenW || lenS > lenW && lenS < 3) break; i += lenS; j += lenW; } if (i === str.length && j === w.length) { count++; } } return count; } console.log(extraWords(str, words));
आउटपुट
और कंसोल में आउटपुट होगा -
1