字符串2解答

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

字符串习题解答

1.回文字符串

输入一串字符串判断其是否为回文字符串(所谓回文就是左看右看都一样)。

如输入qwer

输出no

输入M8w-T0T-w8M

输出yes

以下两种方法都正确,比较它们的区别:

这种方法速度更快些!

若回文:则第1个字符和倒数第1个字符相同

第2个字符和倒数第2个字符相同

第3个字符和倒数第3个字符相同

……

其中有一对不相同则不是回文,都相同就是回文。

var st1,st2:string;

I,len:integer;

begin

readln(st1);

st2:=’’;len:= length(st1);

for i:=1 to len do

if st1[i]<>st1[len-i+1] then

begin

writeln(‘no’);

exit; {一旦不等就不是回文了,后面没必要再去比较了,程序退出} end;

{程序运行到这里还没有退出,说明一直比较到最后都是相同的,所以一定是回文} writeln(‘yes’);

end.

2.将a改成b

输入一串字符串,将其中的所有‘a’替换成’b’例如:输入aaabbcc

输出bbbbbcc

方法1:

Var st:string ; I, len:integer; Begin

Readln(st);len:=length(st); For i:=1 to len do

If st[i]:=’a’then st[i]:=’b’; Writeln(st);

End. 方法2:

Var st:string ; I, p:integer;

Begin

Readln(st);

P:= pos(‘a’,st);

While p>0 do

Begin delete(st,p,1) ; insert(‘b’,st,p); P:= pos(‘a’,st); end;

Writeln(st);

End.

3.查找子串并替换

对输入的一句子实现查找且置换的功能(找到某个子串并换成另一子串)。

【输入描述】

第一行为原来的字符串,第二行为要查找的子串,第三行为要替换成的子串【输出描述】

只有一行,为替换好的字符串

【输入样例】

abcf abdabc

abc

AA

【输出样例】

AAf abdAA

var st1,st2,st3:string; len,p:integer;

begin

readln(st1); readln(st2); readln(st3);

len:=length(st2); p:=pos(st2,st1);

while p>0 do

begin delete(st1,p,len); insert(st3,st1,p); p:=pos(st2,st1); end; writeln(st1);

end.

4.统计字母出现次数

输入一串小写字母(以"."为结束标志),统计出每个字母在该字符串中出现的次数(若某字母不出现,则不要输出)。

【输入描述】

输入只有一行,包括若干个字符。

【输出描述】

输出只有两行,第一行为出现的小写字母,第二行为字母的出现次数。

【输入样例】

abdceeef.

【输出样例】

abcdef

111131

分析:题目要求统计每一个小写字母出现的次数。小写字母总共26个,那至少需要26个变量来记录。所以用数组吧。

S:array[‘a’..’z’]of integer;

用S[‘a’] 记录字母‘a’出现的次数

用S[‘b’] 记录字母‘b’出现的次数

用S[‘b’] 记录字母‘c’出现的次数

……

Var s:string ; M:char ; i , Len:integer ;

Begin

Readln(s);Len:=Length(s);

For i:=1 to len do

Begin

M:=s[i];

S[m]:=s[m]+1;

End;

For m:=’a’to ‘z’do if s[m]<>0 then write(m);

Writeln;

For m:=’a’to ‘z’do if s[m]<>0 then write(s[m]);

Writeln;

End.

相关文档
最新文档