关于字典排序(200分)

  • 主题发起人 chenziyi
  • 开始时间
C

chenziyi

Unregistered / Unconfirmed
GUEST, unregistred user!
我想编写一个函数,形式如下:
function nextstr(s:string):string;
这个函数完成这样的功能,任意输入一个字符串(只含有a..z字符,不区分大小写),要返
回按照字典排序的下一个字符串。
比如:输入a,返回b,输入aa,返回ab,输入zzz,返回aaaa。
不知道哪位大虾可以帮助我。
分数不够可以再加。
 
表述是不是不清楚?
为什么输入aa返回ab,而输入zzz返回aaaa????
这是什么规则??按照第一个,那么输入zzz应该返回zza呀!
 
对不起,我已经找到问题答案。
 
我找到的解法还是有问题,请大家继续回答。
To taozhiyu:
zza排在zzz的前面,按照字典排序,aaaa应该紧跟在zzz后面.
 
就是穷举要用到的罗,下面假设调用的都已经是合法的字符串了(都是小写的a..z)
function getnext(s:string):string;
var
len:integer;
c:char;
begin
len:=length(s);
if len=0 then
result:='a'
else
begin
c:=s[len];
inc(c);
if c>'z' then
begin
if len>1 then
result:=getnext(copy(s,1,len-1))+'a'
else
result:='aa';
end
else
begin
s[len]:=c;
result:=s;
end;
end;

end;
 
谢谢了。我试了一下,pipi 的方法是可行的.
 
To pipi:
如果字符集中加入数字:比如:a-z,0-9,应该怎样做呢?
 
那么多加一个数组:
c:array[0..xxx] of char=('a','b','c',......,'z','1','2','3',....)
通过数组来取得字符
 
to Pipi:
能不能详细一点,我试了一下,总是有点问题。(如果加数字的话)
谢谢。
 
要详细的得要分了,你另外开啦,地址在这里告诉我,我要明晚才能上来看
说不定别人可以给你搞掂呢
 
To Pipi:
我已经另开了一个,地址是:(300分)
http://www.delphibbs.com/delphibbs/dispq.asp?lid=931139
 
顶部