首页 > 代码库 > 字符处排列组合 delphi
字符处排列组合 delphi
/// <summary> /// 字符串是否存在于“指定升序数字数字组成的任意位数字中” /// eg: /// ASet=178 可以组成的任意位升序数字是:1、7、8、17、18、78、178 /// 若Aval是其中一个则返回true,否则返回的是false /// </summary> /// <param name="AVal">带判断的值</param> /// <param name="ASet">升序的数字字符串</param> function Check_IsAllInAscNumberSetByAnyBit(const AVal, ASet: string): boolean; function Combin(mStrings: TStrings; mStr: string; mLen: Integer): Boolean; procedure fCombin(mSubStr: string; mPath: string); var I: Integer; S: string; b: Boolean; lst: TStringList; begin if Length(mPath) >= mLen then begin lst := TStringList.Create; for i := 1 to Length(mPath) do begin lst.Add(mPath[i]); end; lst.Sort; b := True; for i := 0 to lst.Count - 1 do begin if lst[i] <> mPath[i+1] then begin b := False; Break; end; end; lst.free; if b then mStrings.Add(mPath); end else for I := 1 to Length(mSubStr) do begin S := mSubStr; Delete(S, I, 1); fCombin(S, mPath + mSubStr[I]); end; end; begin Result := False; if not Assigned(mStrings) then Exit; mStrings.BeginUpdate; try mStrings.Clear; fCombin(mStr, ‘‘); finally mStrings.EndUpdate; end; Result := True; end; var i: Integer; lst: TStringList; begin Result := False; lst := TStringList.Create; try Combin(lst, ASet, Length(AVal)); for i := 0 to lst.Count - 1 do begin if AVal = lst[i] then begin Result := True; Exit; end; end; finally lst.Free; end; end; procedure TForm1.btn1Click(Sender: TObject); begin if Check_IsAllInAscNumberSetByAnyBit(edt1.Text, ‘178‘) then Caption := ‘OK‘ else Caption := ‘Bad‘; end;
字符处排列组合 delphi
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。