【发布时间】:2017-10-13 01:04:23
【问题描述】:
我有一个包含多个元素的字符串,有些相同,有些独特。我希望我的代码检查字符串中的每 2 个以下元素,如果它们相等,它应该调用一个函数 ShuffleString,其中输入变量 (randomize) 是字符串本身,它将重新洗牌字符串在一个新的位置。然后,脚本应该重新检查字符串中的每 2 个后续元素,直到没有两个相同的元素出现在彼此旁边。
我做了以下事情:
我的函数文件ShuffleString 工作正常。如前所述,输入变量randomize 包含与MyString 相同的元素,但顺序不同,因为在脚本前面的不相关问题上需要这样做。
function [MyString] = ShuffleString(randomize)
MyString = [];
while length(randomize) > 0
S = randi(length(randomize), 1);
MyString = [MyString, randomize(S)];
randomize(S) = [];
end
脚本没有按预期工作。现在它看起来像这样:
MyString = ["Cat" "Dog" "Mouse" "Mouse" "Dog" "Hamster" "Zebra" "Obama"...
"Dog" "Fish" "Salmon" "Turkey"];
randomize = MyString;
while(1)
for Z = 1:length(MyString)
if Z < length(MyString)
Q = Z+1;
end
if isequal(MyString{Z},MyString{Q})
[MyString]=ShuffleString(randomize)
continue;
end
end
end
它似乎只是将字符串重新洗牌无数次。这有什么问题,我怎样才能让它发挥作用?
【问题讨论】:
-
因为您使用的是无限循环?
while(1).