字符串2解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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.