【发布时间】:2011-09-28 07:27:49
【问题描述】:
这是我想解决的问题
"编写一个函数 GeneratePassword,它接受两个参数,一个整数和一个由字母 (a-z) 和数字 (0-9) 组成的字符串。
当调用 GeneratePassword(5,'abc0123') 时,它应该返回从 'abc0123' 中获取的 5 个字符的随机字符串。
例如:GeneratePassword(7,'abczxc012394') 可以返回以下任何输出: 2c00acb 2c23z93 030b2a4 "
我已经为它写了下面的代码,但是系统说答案是错误的。请解释我做错了什么。
我的代码:
function GeneratePassword($digits,$passwordString){
if($digits > strlen($passwordString)) return '';
else {
$randomSelect = '';
for($i=0;$i<$digits;$i++){
$randomChar = $passwordString[rand(0, strlen($passwordString)-1)];
$randomSelect = $randomSelect.$randomChar ;
$passwordString = str_replace($randomChar,"",$passwordString);
}
return $randomSelect;
}
}
【问题讨论】:
-
您能否解释一下错误答案的含义。是您收到错误消息吗?
-
只是验证,每个字符只能使用一次对吗?我的意思是,为了让你有两次,它必须在源字符串中出现两次,对吧?
-
似乎正在工作:codepad.org/jbjZuMsd
-
系统说什么?你能更好地解释你的问题吗?函数正确,输出正确。