Advertisement
makispaiktis

DCP13 - Longest Substring

Sep 5th, 2020 (edited)
360
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let alphabet = "abcdefghijklmnopqrstuvwxyz";
  2. let str = "abcdeaklmna";
  3. let k = 4;
  4.  
  5. function longestSubstring(str, k){
  6.     if(k <= 0){
  7.         return "Error using function substring!";
  8.     }
  9.     let answer = "";
  10.     for(let i=0; i<str.length-1; i++){
  11.         // 1st index = i
  12.         // Next variable named "permanent answer" will be in relation of this "i" index
  13.         let permanentAnswer = str[i];
  14.         for(let j=i+1; j<str.length; j++){
  15.             // 2nd index = j
  16.             // For every new letter after the first one, I have to check if its position in alphabet
  17.             // is between the limits. I have to compare it with ALL the previous letters in my permanentAnswer
  18.             let hits = 0;
  19.             for(let k=0; k<permanentAnswer.length; k++){
  20.                 if( Math.abs(alphabet.indexOf(str[j]) - alphabet.indexOf(permanentAnswer[k])) <= (k-1) ){
  21.                     hits++;
  22.                 }
  23.             }
  24.             // Now, "hits" must be equal to length of my permanent answer
  25.             // This means that the letters are not too far apart
  26.             if(hits === permanentAnswer.length){
  27.                 permanentAnswer += str[j]
  28.             }
  29.             else{
  30.                 // No, need to walk more in my "str" string after the 1st failure
  31.                 break;
  32.             }
  33.         }
  34.         // Now, I have the permanent "longest answer" beginning from "i" index
  35.         if(permanentAnswer.length >= answer.length){
  36.             answer = permanentAnswer;
  37.         }
  38.     }
  39.     return answer;
  40. }
  41.  
  42. // MAIN FUNCTION
  43. console.log(longestSubstring(str, k));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement