我有一些这样的字符串:
'RRSSTT'
'RRRSSSTTT'
'RRRRSSSSTTTT'
etc...
我需要使用此属性提取所有唯一排列:
- 'RRSSTT' ; 'RRTTSS' ; 'SSRRTT' ; 'SSTTRR' ; 'TTRRSS' ; 'TTSSRR' 都是相同的字符串,并且
- 'RSTRST' ; 'RTSRTS' ; 'TSRTSR' ; 'TRSTRS' ; 'SRTSRT' ; 'STRSTR' 都是相同的字符串。
使用命令perms
我获得所有排列(如果字符串有 6 个元素,排列是 720)。使用uperms
脚本,我获得了所有唯一的排列(如果字符串有 6 个元素,则排列为 90)。我uperm
在 mathworks 上找到了(http://www.mathworks.com/matlabcentral/fileexchange/27321-unique-random-permutations)。
直到这里一切正常,但我需要编写/找到一个生成具有上述特殊属性的排列的其他算法。如果字符串是“RRSSTT”,则所需的排列必须是 15。
有人已经面临这个问题并且可以帮助我吗?
- - - 编辑 - - -
有 15 组等效字符串,例如:
Group 1: Group 6: Group 11:
'RSTTSR' 'RSTSTR' 'RSSTRT'
'SRTTRS' 'SRTRTS' 'STSRRT'
'STRRTS' 'STRTRS' 'RSRTTS'
'RTSSTR' 'TRSRST' 'STTRSR'
'TRSSRT' 'TSRSRT' 'TRRSTS'
'TSRRST' 'RTSTSR' 'TRTSSR'
Group 2: Group 7: Group 12:
'RSTRST' 'RSSRTT' 'RSSTTR'
'SRTSRT' 'SSTRRT' 'SRRTTS'
'STRSTR' 'RRSTTS' 'STTRRS'
'RTSRTS' 'STTSRR' 'TRRSST'
'TRSTRS' 'TRRTSS' 'TSSRRT'
'TSRTSR' 'TTRSSR' 'RTTSSR'
Group 3: Group 8: Group 13:
'RSTSRT' 'SRRSTT' 'SRSTTR'
'STRSRT' 'SSRTTR' 'SRRTST'
'RSTRTS' 'RRTSST' 'RTRSST'
'STRTSR' 'TSSTRR' 'TSSRTR'
'TRSRTS' 'RTTRSS' 'TSTRRS'
'TRSTSR' 'TTSRRS' 'RTTSRS'
Group 4: Group 9: Group 14:
'SRTRST' 'RSRSTT' 'RRSSTT'
'SRTSTR' 'SSRTRT' 'SSRRTT'
'RTSRST' 'STSTRR' 'SSTTRR'
'TSRSTR' 'RRTSTS' 'RRTTSS'
'RTSTRS' 'TRTRSS' 'TTRRSS'
'TSRTRS' 'TTSRSR' 'TTSSRR'
Group 5: Group 10: Group 15:
'STRRST' 'SRSRTT' 'SRSTRT'
'RSTTRS' 'SSTRTR' 'RSRTST'
'SRTTSR' 'RRSTST' 'STSRTR'
'RTSSRT' 'TSTSRR' 'RTRSTS'
'TRSSTR' 'RTRTSS' 'TSTRSR'
'TSRRTS' 'TTRSRS' 'TRTSRS'
我需要为每个组返回一个字符串,我更喜欢以 R 作为第一个字母的字符串。很抱歉符号更改。
-----编辑1-----
我会试着解释为什么
str1='RSTRST'
和
str2='STRSTR'
是等价的。
您必须考虑 str1 中的“R”并将其替换为“S”,将“S”替换为“T”,最后将“T”替换为“R”。一个组中的所有字符串都是正确的,但是在每个组中所有字符串都是等效的,我只需要从每个组中取一个字符串。
正如烧杯所说,角色替换规则并不总是有效,我需要找到合适的角色。