Ahmed Ebrahim11 نشر 30 ديسمبر 2023 أرسل تقرير نشر 30 ديسمبر 2023 هنا يجب ان تعود القيمه max =2 ولكن تخرج بواحد دائما ما السبب var lengthOfLongestSubstring = function(s) { var max = 0, dd=0, a = s.split(''),b=[]; for(let i = 0; i<a.length;i++){ b.push(a[i]); for (let j=0; j<b.length;j++){ if(b[j] === a[i+1]){ dd = b.length; if(dd >= max) {max = dd, b.join(''), b.splice(0, b.length)}; }else if (a[i+1] == a.length-1){max++} } } if(dd === 0){ return a.length }else{return max} }; console.log(lengthOfLongestSubstring('aab')) اقتباس
0 Khaled Osama3 نشر 31 ديسمبر 2023 أرسل تقرير نشر 31 ديسمبر 2023 بتاريخ 10 ساعة قال Ahmed Ebrahim11: هنا يجب ان تعود القيمه max =2 ولكن تخرج بواحد دائما ما السبب var lengthOfLongestSubstring = function(s) { var max = 0, dd=0, a = s.split(''),b=[]; for(let i = 0; i<a.length;i++){ b.push(a[i]); for (let j=0; j<b.length;j++){ if(b[j] === a[i+1]){ dd = b.length; if(dd >= max) {max = dd, b.join(''), b.splice(0, b.length)}; }else if (a[i+1] == a.length-1){max++} } } if(dd === 0){ return a.length }else{return max} }; console.log(lengthOfLongestSubstring('aab')) المشكلة هنا أن b لا يتم تفريغها بعد كل مرة تتم مقارنة الحروف وتحديد أطول سلسلة. لذلك عند الانتقال لحرف التالي لا يزال b يحتوي على الحروف السابقة، مما يؤدي دائما إلى تجاوز السلسلة الطول 2. الحل هو تفريغ b في نهاية كل دورة للمقارنة: var lengthOfLongestSubstring = function(s) { var max = 0, dd = 0, a = s.split(''), b = []; for (let i = 0; i < a.length; i++) { b.push(a[i]); for (let j = 0; j < b.length; j++) { if (b[j] === a[i + 1] || i === a.length - 1) { dd = b.length; if (dd > max) { max = dd; } b = []; } } } return max; }; console.log(lengthOfLongestSubstring('aab')); بهذا ستتم مقارنة السلسلة بشكل صحيح وسترجع القيمة 2 لسلسلة aab. اقتباس
السؤال
Ahmed Ebrahim11
هنا يجب ان تعود القيمه max =2 ولكن تخرج بواحد دائما ما السبب
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.