大家帮写几个数字字符串的函数
有一些全是由数字构成的字符串
如 s1=“42342342330009932323”
s2=“2342342342343249999099”
他们按一定的法则进行比较大小,并排序
法则1 ,那个重复的数字出现的多,哪个排在前面
比如11133和112233,前面的字符11133出现了3次111,而后面的字符的重复次数是2,
所有11133 要在112233的前面。
法则2 ,当两个字符串的重复个数一样时,比如都重复了3次,11133和22244,那么,重复的数字较大
的排在前面,即22244排在11133的前面。
这个怎么用delphi实现呢? delphi 字符串 比较 排序 重复
[解决办法]
用正则吧,匹配出来后再单纯比较各组数字的大小
[解决办法]
function str2order(s:string):string;
var
ac:array ['0'..'9'] of integer;
i,p,n,x:integer;
d,c,e:char;
begin
for c:='0' to '9' do
ac[c]:=0;
for i:=1 to length(s) do
inc(ac[s[i]]);
p:=0;
result:='';
n:=0; d:='0';
x:=999; e:='9';
for p:=1 to 10 do
begin
for c:='9' downto '0' do
if ac[c]>x then continue
else if (ac[c]=x) and (c>=e) then contine
else if ac[c]>n then
begin
n:=ac[c];
d:=c;
end
else if (ac[c]=n) and (c>d) then
d:=c;
result:=result+format('%3d%c',[n,d]);
x:=n; e:=d;
end;
//result:=result+s; //加此行后无须关联,原字符串即结果的第41位开始
end;