हमें एक आवश्यकता है कि हमें एक सरणी को उलटने के लिए एक फ़ंक्शन लिखना होगा, लेकिन एक विशेष वर्ण की अनुक्रमणिका को एक सरणी में प्रस्तुत किए बिना, जैसे नीचे उदाहरण -
यदि '#' वह विशेष वर्ण है, तो निम्न सरणी,
[18,-4,'#',0,8,'#',5]
वापस आ जाना चाहिए -
[5, 8, "#", 0, -4, "#", 18],
यहां, '#' को छोड़कर, जो अपनी अनुक्रमणिका बनाए रखता है, संख्याओं को उलट दिया जाता है।
आइए इसके लिए कोड लिखें।
हम यहां टू-पॉइंटर अप्रोच का उपयोग करेंगे, एरे के चरम बाएं और चरम दाएं ओर इंगित करते हुए प्रारंभ और अंत।
यदि किसी अनुक्रमणिका में हमें विशेष वर्ण मिलता है, तो हम उस अनुक्रमणिका को छोड़ देते हैं और पुनरावृति जारी रखते हैं, और जब हमें कोई अनुक्रमणिका जोड़ी मिलती है, जिस पर कोई विशेष वर्ण नहीं होता है, तो हम उनके मानों की अदला-बदली करते हैं और हम ऐसा करना जारी रखते हैं जबकि प्रारंभ सूचक सही सूचक से कम होता है। ।
उदाहरण
const arr = [18,-4,'#',0,8,'#',5]; const reverseArray = (arr, special) => { let start = 0, end = arr.length - 1, temp; while(start < end){ if(arr[start] === special){ start++; continue; }; if(arr[end] === special){ end--; continue; }; temp = arr[start]; arr[start] = arr[end]; arr[end] = temp; start++; end--; }; }; reverseArray(arr, '#'); console.log(arr);
आउटपुट
कंसोल में आउटपुट होगा -
[ 5, 8, '#', 0, -4, '#', 18 ]