对于一个例子考试问题,我被要求纠结"纠结"如下所示的字符串:
tangledWord('today')='otady'
tangledWord('12345678')='21436587'
我知道这是一个非常简单的问题,但它让我感到难过。
当长度均匀时,我可以让它产生一个纠结的词,但是当它很奇怪时我会遇到麻烦,这是我的功能:
function tangledWord(s)
n=length(s);
a=s(1:2:n);
b=s(2:2:n);
s(1:2:n)=b;
s(2:2:n)=a;
disp(s);
end
答案 0 :(得分:4)
对于奇数字长度,您需要将n
减少1
以保持最后一个字符不变。使用mod
检测奇数字长度。
答案 1 :(得分:0)
如果你想随机加扰每个字符,你可以尝试:
string = '1234567';
shuffled = string(randperm(numel(string)))
shuffled = 5741326
如果你想改变前两个字符:
tangled = [string(2) string(1) string(3:end)]
纠结= 2134567
如果你想改变每两个字符:
n = ( numel(string)-mod(numel(string),2));
tangled2 = [flipud(reshape(string(1:n),[],n/2))(:); string(n+1:end)]'
tangled2 = 2143657
答案 2 :(得分:0)
function tangledWord(s)
n=length(s);
if mod(n,2) == 0
a=s(1:2:n);
b=s(2:2:n);
s(1:2:n)=b;
s(2:2:n)=a;
disp(s)
elseif mod(n,2) ~= 0
a=s(1:2:end-1);
b=s(2:2:end-1);
s(1:2:end-1)=b;
s(2:2:end-1)=a;
disp(s)
end
end