我的问题:如何生成这些字符串

yypp 2001-11-08 01:52:54
我有一个字符串 j4ln67s9uzp0q4g 我要将他们随机排列生成N个新字符串,不许重复
给出原代码
分数马上送上
...全文
94 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zou5655 2001-11-08
  • 打赏
  • 举报
回复
随机函数这样写:
function TForm1.HanShu(InputString: String): String;
//InputString :输入字符串;
//RESULT : 返回字符串;
Var
a : Array Of Char;
Temp : Char;
i, FromSit, ToSit ,StrLength: Integer;
begin
Randomize;
StrLength := Length(InputString);
SetLength(a,StrLength);
For i := 1 To StrLength Do
a[i-1] := InputString[i];
//随机交换关联序号
For i := 0 To StrLength-1 Do
Begin
//生成随机数
FromSit := Random(StrLength);
ToSit := Random(StrLength);
//交换序号
Temp := a[FromSit];
a[FromSit] := a[ToSit];
a[ToSit] := Temp;
End;
For i := 1 To StrLength Do
InputString[i] := a[i-1];
Result := InputString;
end;
然后再比较字符串是否相同;也就是说字符串是否相等!!
OK!!!!!!!!
lovewangj 2001-11-08
  • 打赏
  • 举报
回复
s1 := 'j4ln67s9uzp0q4g';
l1 := Length(s1)-1;

randomize;
s2 := '';
for i := 0 to l1 do
begin
if i= 0 then
begin
s2 := s2 + s1[i];
break;
end;
j := random(l1-i);
s2 := s2 + s1[j];
s1[j] := s1[l1-i];
end;
cobi 2001-11-08
  • 打赏
  • 举报
回复
如果对字符串的长度不做限制的话,可以首先在最大长度中随机生成一个值作为新字符串的长度,然后作为循环量控制在原字串中取得多少个字母以构成新的字串。
如果字符串中允许重复字符出现的话,也就不用做dongys_2000(dongys)的第三步操作了
tikkypeng 2001-11-08
  • 打赏
  • 举报
回复
同意
cobi 2001-11-08
  • 打赏
  • 举报
回复
dongys_2000(dongys)的思路正确,可以这样做,而且编码也不复杂
dongys_2000 2001-11-08
  • 打赏
  • 举报
回复
我给思路:
1、得到字符串的长度
2、用随机函数去一个字符
3、把这个字符从原字符串去掉
4、循环1——3
5、当字符串长度为0时结束

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧