【发布时间】:2014-04-04 10:57:20
【问题描述】:
我的任务是连续显示最常用的字母。例如,如果你输入 aabbbbccbbb,重复最多的字符是 B,它被使用了 4 次。关于同一任务有一个非常相似的主题,但我不明白代码。 Most repeating character in a string
Program Task;
var s:string;
i,k,g,count:integer;
c:char;
begin
Readln(s);
g:=0;
while Length(s) > 0 do
begin
c := s[1];
i:=1;
while i<= Length(s) do
begin
If (c=s[i]) then
delete(s,i,1)
else
Inc(i);
If (c=s[i]) then
Inc(g);
end;
end;
Writeln(g);
Readln;
end.
我面临很多问题。首先是我不知道如何显示哪个字符最常用,其次是我不知道如何比较哪个重复字符最常用。 例如,如果我写 aaaabbbc,它会给我 7 的答案,因为有 4xa 和 3xb。 非常感谢所有帮助。
【问题讨论】:
-
一种效果不那么糟糕但易于理解的方法是遍历字符串,如果字符不存在,则将其添加到值为 1 的字典中,如果存在则增加字符的值为 1。然后通过字符串一次 - 你有每个字符的计数。还有许多其他方法 - 所以这只是一种容易做到的方法
-
计数是微不足道的,但上面的代码对你来说几乎没用。您需要的第一件事是某种方式来存储角色和它被看到的次数。如果这是香草帕斯卡,你需要写或借一些东西来做到这一点。
标签: pascal