[POJ1936 All in All]

[题目来源]:Ulm Local 2002

[关键字]:字符串

[题目大意]:给出两个字符串s1 s2判断s1是否在s2中出现过,可以不连续。

//=====================================================================================================

[分析]:有两种方法:1、LCS这个就不细讲了,只要最后等于s1的长度就‘YES’;2、直接模拟,一个一个字母的找,找到了就从此位往后找下一个字母,直道找完或找不到为止。

[代码]:

View Code
 1 {
2 PROB:POJ1936
3 DATE:2011\10\16
4 }
5 var
6 s1, s2: ansistring;
7
8 procedure init;
9 var
10 i: longint;
11 begin
12 //writeln(ord('A')-ord('a'));
13 readln(s2);
14 s1 := copy(s2,1,pos('',s2)-1);
15 delete(s2,1,pos('',s2));
16 for i := 1 to length(s1) do
17 if s1[i] in ['A'..'Z'] then s1[i] := chr(ord(s1[i])+32);
18 for i := 1 to length(s2) do
19 if s2[i] in ['A'..'Z'] then s2[i] := chr(ord(s2[i])+32);
20 //writeln(s1,'',s2,'@');
21 end;
22
23 procedure work;
24 var
25 i, t: longint;
26 begin
27 for i := 1 to length(s1) do
28 begin
29 t := pos(s1[i],s2);
30 if t <> 0 then
31 delete(s2,1,t)
32 else
33 begin
34 writeln('No');
35 exit;
36 end;
37 end;
38 writeln('Yes');
39 exit;
40 end;
41
42 begin
43 //assign(input,'d:\1.txt');reset(input);
44 //assign(output,'d:\1.out');rewrite(output);
45 while not seekeof do
46 begin
47 init;
48 work;
49 end;
50 //close(input);
51 //close(output);
52 end.



你可能感兴趣的:(poj)