हमारे पास एक आवश्यकता है कि हमें एक एरे को उल्टा करने के लिए एक फ़ंक्शन लिखना है लेकिन एरे में मौजूद विशेष वर्ण के इंडेक्स को बदले बिना, जैसे नीचे उदाहरण में -
यदि '#' वह विशेष वर्ण है तो, निम्नलिखित एरे,
[18,-4,'#',0,8,'#',5]
को यह लौटाना चाहिए -
[5, 8, "#", 0, -4, "#", 18],
यहां, संख्याएं उल्टी हो गई हैं, '#' को छोड़कर जिसने अपना इंडेक्स बनाए रखा।
आइए इसके लिए कोड लिखते हैं।
हम यहां टू-पॉइंटर दृष्टिकोण का उपयोग करेंगे, start और end एरे के अत्यधिक बाएं और अत्यधिक दाएं को इंगित करते हैं।
यदि किसी इंडेक्स पर हमें विशेष वर्ण मिलता है, तो हम उस इंडेक्स को छोड़ देते हैं और पुनरावृत्ति जारी रखते हैं, और जब हमें एक इंडेक्स जोड़ी मिलती है जिस पर कोई विशेष वर्ण नहीं होता है, तो हम उनके मानों को स्वैप करते हैं और हम ऐसा तब तक करते रहते हैं जब तक start पॉइंटर right पॉइंटर से कम है।
उदाहरण
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 ]