首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 找问题 [已结贴,结贴人:daixiulin]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daixiulin
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-08-19 15:10:30 楼主
    在str2中如159,若必含两个数字15,则结果为真,但实际运算有问题:
    //////////必有两数字
    function twoStrInstr(str1:string;str2:String):boolean;
    var
          j,k:integer;
         
      begin
            k:=0;
            if str1[1]=str1[2] then
            begin
            for  j:=1 to  3 do
            if str2[j]=str1[1] then
            inc(k);
            if k>=2 then
            Result:=true;
            end;
              if str1[1] <>str1[2] then
            if (pos(str1[1],str2)>0) and (pos(str1[2],str2)>0) then
            begin
            Result:=true;
            end;
      end;

    procedure TForm1.Button62Click(Sender: TObject);
    var
      str1,str2:string;
    begin
    str1:='12';
      str2:='133';
      if  twostrInStr(str1,str2) then
        showmessage('ok');
    end;
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gzmhero
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-08-19 15:17:421楼 得分:0
    函数太乱,改下:

    Delphi(Pascal) code
    function twoStrInstr(str1:string;str2:String):boolean; begin Result:=(Pos(str1[2],str2)>0) and (Pos(str1[1],str2)>0) and (Pos(str1[2],str2)>Pos(str1[1],str2)); end;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gzmhero
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 2

      2

    发表于:2008-08-19 15:24:332楼 得分:100
    函数头上加一句

      begin
            Result:=false;
            k:=0;
            if str1[1]=str1[2] then
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • kernelj
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-19 16:27:383楼 得分:0
    如果不需要连在一起可以这样

    function chk(str1,str2:string):Boolean;
    var
      i,j:Integer;
    begin
      j:=0;
      for i:=1 to Length(str1) do
      begin
        if (Pos(str1[i],str2) <>0) then inc(j);
      end;
      result:=(j>=2);
    end;

    如果需要连在一起就简单,直接 pos(str1,str2) <>0 就可以。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • daixiulin
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-08-20 08:57:514楼 得分:0
      3楼代码是精简,但少考虑了一种情况,如果str1:='11',str2:='135', 则始终j>=2,结果不符合要求.
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved