Advertisement
Guest User

Untitled

a guest
May 21st, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let readline  = require("readline");
  2. const fs = require('fs');
  3. let rl = readline.createInterface(process.stdin,process.stdout);
  4. let r_str = '';
  5. rl.on('line',function(m_str) {
  6.   //console.log();
  7.   rl.on('line',function(p_str) {
  8.      let ans;
  9.       if (m_str.length != p_str.length) {
  10.          console.log(-1);
  11.   }
  12.   else{
  13.    ans = kmp11(m_str,p_str);
  14.        console.log(ans);  
  15.  
  16.   }
  17.        rl.close();
  18.     process.exit();
  19.   });
  20.  
  21. });
  22.  
  23.  
  24.  
  25. function kmp11(main_str_js,pattern_js) {
  26.   let mas_prefix =new Array(pattern_js.length).fill(0);
  27.   let result = [];
  28.   let count = 0;
  29.   let flag = 0;
  30.   mas_prefix[0] = 0;
  31.   for (let i = 1; i < pattern_js.length; ++i) {
  32.     count = mas_prefix[i-1];
  33.     while ((count > 0) && (pattern_js[i] != pattern_js[count])){
  34.       count = mas_prefix[count-1];
  35.     }
  36.     if (pattern_js[i] == pattern_js[count]){
  37.       count++;
  38.     }
  39.     mas_prefix[i] = count;
  40.   }
  41.   count = 0;
  42.   for (let i = 0; i < main_str_js.length; ++i)
  43.   {
  44.   while ((count > 0) && (pattern_js[count] != main_str_js[i])){
  45.       count = mas_prefix[count-1];
  46.   }
  47.   if (pattern_js[count] == main_str_js[i]){
  48.     count++;
  49.   }
  50.   //console.log(count);
  51. }
  52.   let ans = (main_str_js.length - count) ;
  53.   //console.log(ans);
  54.   //ans = result[1];
  55.       if (count == main_str_js.length){
  56.         ans = 0;
  57.         count = 0;
  58.       }
  59.   else{
  60.   for (let i = 0; i < main_str_js.length - count; i++) {
  61.     if (pattern_js[i+count] != main_str_js[i])
  62.       ans = -1;
  63.   }
  64.   }
  65.  
  66. return ans;
  67. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement