Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var
- str, pattern, sub : string;
- isStart, isFinish, result : boolean;
- s, r, i, k : integer;
- BEGIN
- readln(pattern);
- readln(str);
- repeat
- k := pos('**', str);
- if k <> 0 then delete(str, k, 2);
- until k = 0;
- if pattern='*' then writeln('YES');
- isStart := true;
- isFinish := false;
- sub := '';
- if (pattern[1] = '*') then begin
- isStart := false;
- delete(pattern, 1, 1);
- end;
- if (pattern[length(pattern)] <> '*') then begin
- isFinish := true;
- pattern := pattern + '*';
- end;
- result := true;
- while (length(pattern) > 0) do begin
- s := pos('*', pattern);
- sub := copy(pattern, 1, s - 1);
- delete(pattern, 1, s);
- if (length(pattern) > 0) then
- r := pos(sub, str)
- else begin
- r := 0;
- for i := length(str) - length(sub) + 1 downto 1 do
- if sub = copy(str, i, length(sub)) then begin
- r := i;
- break;
- end;
- end;
- if (r = 0) or (r > 1) and isStart then begin
- result := false;
- break;
- end else begin
- isStart := false;
- if (length(pattern) = 0) and isFinish and (r <> length(str) - length(sub) + 1) then begin
- result := false;
- break;
- end else
- delete(str, 1, r + length(sub) - 1);
- end;
- end;
- if result then writeln('YES') else writeln('NO');
- readln;
- END.
Add Comment
Please, Sign In to add comment