Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let readline = require("readline");
- const fs = require('fs');
- let rl = readline.createInterface(process.stdin,process.stdout);
- let r_str = '';
- rl.on('line',function(m_str) {
- //console.log();
- rl.on('line',function(p_str) {
- let ans;
- if (m_str.length != p_str.length) {
- console.log(-1);
- }
- else{
- ans = kmp11(m_str,p_str);
- console.log(ans);
- }
- rl.close();
- process.exit();
- });
- });
- function kmp11(main_str_js,pattern_js) {
- let mas_prefix =new Array(pattern_js.length).fill(0);
- let result = [];
- let count = 0;
- let flag = 0;
- mas_prefix[0] = 0;
- for (let i = 1; i < pattern_js.length; ++i) {
- count = mas_prefix[i-1];
- while ((count > 0) && (pattern_js[i] != pattern_js[count])){
- count = mas_prefix[count-1];
- }
- if (pattern_js[i] == pattern_js[count]){
- count++;
- }
- mas_prefix[i] = count;
- }
- count = 0;
- for (let i = 0; i < main_str_js.length; ++i)
- {
- while ((count > 0) && (pattern_js[count] != main_str_js[i])){
- count = mas_prefix[count-1];
- }
- if (pattern_js[count] == main_str_js[i]){
- count++;
- }
- //console.log(count);
- }
- let ans = (main_str_js.length - count) ;
- //console.log(ans);
- //ans = result[1];
- if (count == main_str_js.length){
- ans = 0;
- count = 0;
- }
- else{
- for (let i = 0; i < main_str_js.length - count; i++) {
- if (pattern_js[i+count] != main_str_js[i])
- ans = -1;
- }
- }
- return ans;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement