Guest User

Untitled

a guest
Nov 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. var
  2. str, pattern, sub : string;
  3. isStart, isFinish, result : boolean;
  4. s, r, i, k : integer;
  5.  
  6. BEGIN
  7. readln(pattern);
  8. readln(str);
  9. repeat
  10. k := pos('**', str);
  11. if k <> 0 then delete(str, k, 2);
  12. until k = 0;
  13. if pattern='*' then writeln('YES');
  14. isStart := true;
  15. isFinish := false;
  16. sub := '';
  17. if (pattern[1] = '*') then begin
  18. isStart := false;
  19. delete(pattern, 1, 1);
  20. end;
  21. if (pattern[length(pattern)] <> '*') then begin
  22. isFinish := true;
  23. pattern := pattern + '*';
  24. end;
  25. result := true;
  26. while (length(pattern) > 0) do begin
  27. s := pos('*', pattern);
  28. sub := copy(pattern, 1, s - 1);
  29. delete(pattern, 1, s);
  30. if (length(pattern) > 0) then
  31. r := pos(sub, str)
  32. else begin
  33. r := 0;
  34. for i := length(str) - length(sub) + 1 downto 1 do
  35. if sub = copy(str, i, length(sub)) then begin
  36. r := i;
  37. break;
  38. end;
  39. end;
  40.  
  41. if (r = 0) or (r > 1) and isStart then begin
  42. result := false;
  43. break;
  44. end else begin
  45. isStart := false;
  46. if (length(pattern) = 0) and isFinish and (r <> length(str) - length(sub) + 1) then begin
  47. result := false;
  48. break;
  49. end else
  50. delete(str, 1, r + length(sub) - 1);
  51. end;
  52. end;
  53.  
  54. if result then writeln('YES') else writeln('NO');
  55. readln;
  56. END.
Add Comment
Please, Sign In to add comment