首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

大家帮写几个数字字符串的函数解决方案

2013-11-26 
大家帮写几个数字字符串的函数有一些全是由数字构成的字符串如s1“42342342330009932323”s2“234234234234

大家帮写几个数字字符串的函数
有一些全是由数字构成的字符串
  如  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;

[解决办法]
朋友......把这里的分也给我吧

热点排行