String 如何在MATLAB中对字符串进行纠结/置乱/重新排列?

String 如何在MATLAB中对字符串进行纠结/置乱/重新排列?,string,matlab,String,Matlab,例如,我被要求“纠结”一个字符串,如图所示: 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;

例如,我被要求“纠结”一个字符串,如图所示:

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

对于奇数字长度,您需要将
n
减少
1
,以保持最后一个字符不变。使用
mod
检测奇数字长度。

对于奇数字长度,您需要将
n
减少
1
以保持最后一个字符不变。使用
mod
检测奇数字长度。

如果要随机对每个字符加扰,可以尝试:

string = '1234567';
shuffled = string(randperm(numel(string)))
洗牌=5741326


如果要更改前两个字符:

tangled = [string(2) string(1) string(3:end)]
n = ( numel(string)-mod(numel(string),2));
tangled2 = [flipud(reshape(string(1:n),[],n/2))(:); string(n+1:end)]'
缠结=2134567


如果要每两个字符更改一次:

tangled = [string(2) string(1) string(3:end)]
n = ( numel(string)-mod(numel(string),2));
tangled2 = [flipud(reshape(string(1:n),[],n/2))(:); string(n+1:end)]'
tangled2=2143657


如果要随机置乱每个字符,可以尝试:

string = '1234567';
shuffled = string(randperm(numel(string)))
洗牌=5741326


如果要更改前两个字符:

tangled = [string(2) string(1) string(3:end)]
n = ( numel(string)-mod(numel(string),2));
tangled2 = [flipud(reshape(string(1:n),[],n/2))(:); string(n+1:end)]'
缠结=2134567


如果要每两个字符更改一次:

tangled = [string(2) string(1) string(3:end)]
n = ( numel(string)-mod(numel(string),2));
tangled2 = [flipud(reshape(string(1:n),[],n/2))(:); string(n+1:end)]'
tangled2=2143657


顺便说一句,你可以用
end
关键字代替
n
so
s(1:2:n)
其中
n=length(s)
与Just
s(1:2:end)相同。
顺便说一句,你可以用
end
关键字代替
n
so
s(1:2:n)
其中
n=length(s)
与Just
s相同(1:2:end)
事实上,对于奇数和偶数情况,您可以只使用
n-mod(n,2)
事实上,对于奇数和偶数情况,您可以只使用
n-mod(n,2)
而此代码可以回答问题,提供有关此代码为什么和/或如何回答问题的额外上下文,从而提高其长期价值。”虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的其他信息将提高答案的长期价值。请记住,您回答的问题是面向未来读者的,而不仅仅是现在提问的人!请编辑您的答案以添加解释,并指出问题的局限性nd假设适用。提及为什么此答案比其他答案更合适也无妨。“虽然此代码可以回答此问题,但提供有关此代码为什么和/或如何回答此问题的附加上下文可提高其长期价值。”虽然此代码可能会回答问题,但提供有关如何和/或为什么解决问题的其他信息将提高答案的长期价值。请记住,您回答的问题是面向未来读者的,而不仅仅是现在提问的人!请编辑您的答案以添加解释,并指出问题的局限性nd假设适用。提到为什么这个答案比其他答案更合适也无妨。