اذهب إلى المحتوى

السؤال

نشر

هنا يجب ان تعود القيمه 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'))

 

Recommended Posts

  • 0
نشر
بتاريخ 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.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...