Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var s = WScript.StdIn.ReadLine();
- var t = WScript.StdIn.ReadLine();
- var ans = [];
- count = 0;
- S_i = 0; // s.charAt(i+j) // should change the name
- //j = t.length -1; // t.charAt(j)
- sign = {}; // ассоциативный массив
- for (i = 0; i<t.length;i++) // подсчет количества повторов
- {
- if (CheckIfContainsInT(sign, t.charAt(i)))
- {
- sign[t.charAt(i)]++;
- }
- else
- sign[t.charAt(i)] = 1;
- }
- Check(sign);
- while(S_i<=s.length-t.length) // last symbol
- {
- if (s.charAt(S_i+t.length-1) != t.charAt(t.length-1))
- {
- //WSH.echo(s.charAt(S_i+t.length-1) + "!=" + t.charAt(t.length-1));
- //WSH.echo(CheckIfContainsInT(sign, s.charAt(S_i+t.length-1)));
- //WSH.echo(FindLastPosition(t, s.charAt(S_i+t.length-1)));
- if (CheckIfContainsInT(sign, s.charAt(S_i+t.length-1)))
- {
- S_i+=FindLastPosition(t, s.charAt(S_i+t.length-1)) +1;
- }
- else
- S_i+=t.length;
- }
- else
- {
- var l = 1;
- for (k = t.length-2; k>-1;k--) // last symb is correct, so see from t.l.-2
- {
- if (s.charAt(S_i + k)!=t.charAt(k))
- {
- if (sign[s.charAt(S_i + k)] == undefined )
- {
- var delta = t.length - FindLastPosition(t, s.charAt(S_i + k)) - l;
- if (delta>1)
- S_i+=delta;
- else
- S_i+=1;
- break;
- }
- else
- {
- S_i+= t.length - l;
- break;
- }
- }
- else
- l++;
- }
- if (l==t.length)
- {
- if(ans.length<10)
- ans.push(S_i);
- count++;
- S_i+=t.length;
- }
- }
- }
- WSH.echo("Count = " + count);
- Show(ans);
- function Check(sign)
- {
- for (var i in sign)
- WSH.echo("'" + i + "'" + " = " + sign[i]);
- }
- function CheckIfContainsInT (sign, ch) // DON'T WORK!
- {
- for (var j in sign)
- {
- if (j == ch)
- return true;
- }
- return false;
- }
- function FindLastPosition(str, ch)
- {
- for(j = str.length-1; j>-1;j--)
- {
- if (str.charAt(j) == ch)
- return j;
- }
- }
- function Show(array)
- {
- for (i = 0; i<array.length;i++)
- {
- WSH.echo(i + ": " + array[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement