我的問題聽起來可能是noob,但它在這裏。將一組字符作爲一個單元計數的字符串排列
我從用戶那裏輸入「Karim @ 123」。我希望我的程序創建給定輸入的排列,將「Karim」,「@」和「123」視爲單個單元。因此輸出將類似於「karim123 @」,「@ karim123」,「@ 123karim」 「123 @卡里姆」, 「123karim @」。請記住,會有3!在這個特殊情況下的排列。我正在使用php函數,但該函數告訴我「karim @ 123」的所有排列不是我想要的。功能如下。
function permute($str,$i,$n) {
if ($i == $n)
print "$str\n";
else {
for ($j = $i; $j < $n; $j++) {
swap($str,$i,$j);
permute($str, $i+1, $n);
swap($str,$i,$j); // backtrack.
}
}
}
// function to swap the char at pos $i and $j of $str.
function swap(&$str,$i,$j) {
$temp = $str[$i];
$str[$i] = $str[$j];
$str[$j] = $temp;
}
$str = "hey";
permute($str,0,strlen($str));
PS:我對編程和算法很陌生。
PPS:請在downvoting之前指定原因。
爲什麼你只能像'Karim','@'和'123'這樣的字符串只有3個分區,爲什麼不是4或5或2或'k'分區? – vish4071
它是否將字符串分組在一起,包括所有字母字符,所有特殊字符和所有數字在一起?確切地說, – vish4071
。此外,輸入字符串的模式將是這樣的。 「單詞」+「特殊字符」+「數字」。 –