我正在使用带有函数getLongestCommonSubstring
所以我的字符串只包含0-9
和>
;它们看起来像这样:
string A:
0113> 0213> 0212> 0312> 0411> 0611> 0711> 0812> 1012> 1112> 1212> 1412> 1313> 1413> 1412> 1311> 1211> 1212> 1012> 1013> 0912> 0812> 0712> 0513&GT ; 0612> 0511> 0410> 0309> 0209> 0308> 0207> 0107> 0007> 0109&GT 0010 GT 0110 GT 0010 GT; 0008> 0007> 0106> 0105> 0204> 0304> 0503> 0603> 0701> 0801> 0802> 0803&GT ; 0904> 1003> 1002&GT 1001 GT; 1002> 1103> 1004> 0904> 0803> 0802> 0701> 0702> 0603> 0503> 0403> 0303> 0204> 0105> 0104> 0203> 0302> 0401> 0302> 0203> 0204&GT ; 0104> 0105> 0106> 0107> 0307> 0308> 0409> 0410> 0311> 0212> 0113> 0213> 0113> 0213
String B:
0113> 0213> 0212> 0312> 0411> 0511> 0410> 0409> 0308> 0307> 0207> 0107> 0108> 0109&GT 0010 GT 0110 GT 0010 GT; 0009> 0107> 0207> 0307> 0308> 0309> 0209&GT ; 0309> 0410> 0411> 0611> 0711> 0812> 0912> 1012> 1112> 1212> 1412> 1313> 1412> 1212> 1112> 1012> 1013> 0912> 0812> 0612> 0613> 0513> 0612> 0611> 0511&GT ; 0411> 0312> 0213> 0113> 0213> 0113> 0212> 0311> 0411> 0312> 0213> 0212> 0311> 0312> 0311> 0411> 0410> 0409> 0308> 0307> 0207> 0107> 0106> 0105> 0204&GT ; 0304> 0503> 0604> 0603> 0602> 0601> 0701> 0801> 0802> 0803> 0804> 0904> 1004> 1003> 1002&GT 1001 GT; 1002&GT 1001 GT; 1003> 1004> 0904> 0803> 0802> 0801> 0701&GT ; 0602> 0604> 0504> 0404> 0304> 0104> 0105> 0107> 0108> 0109> 0108> 0107> 0207> 0308> 0409> 0410> 0311> 0212> 0213
String C:
0113> 0213> 0113> 0213> 0113> 0213> 0212> 0311> 0411> 0611> 0812> 0912> 1012> 1212> 1312> 1412> 1413> 1314> 1313> 1213> 1413> 1412> 1411> 1311&GT ; 1212&GT 1011 GT; 0911> 0811> 0712> 0611> 0411> 0410> 0409> 0309> 0209> 0309> 0408> 0410> 0510> 0611> 0712> 0611> 0511> 0411> 0311> 0310> 0409> 0309> 0307&GT ; 0207> 0108> 0109&GT 0110 GT 0010 GT; 0109> 0108> 0107> 0006> 0106> 0105> 0204> 0203> 0303> 0204> 0203> 0302> 0401> 0402> 0401> 0302> 0203> 0304> 0404> 0504&GT ; 0503> 0604> 0705> 0605> 0705> 0604> 0505> 0504> 0603> 0503> 0403> 0303> 0203> 0104> 0105> 0005> 0107> 0108> 0109> 0108> 0107> 0207> 0107> 0106> 0104&GT ; 0204> 0304> 0404> 0504> 0603> 0604> 0603> 0503> 0504> 0603> 0702> 0701> 0801> 0802> 0804> 0904> 1004> 1003> 1002&GT 1001 GT; 1002> 1003> 1104> 1205> 1304&GT ; 1303& GT; 1403> 1404> 1403> 1304> 1205> 1104> 0904> 0804> 0802> 0801> 0701> 0602> 0703> 0604> 0704> 0602> 0701> 0601> 0602> 0603> 0504> 0404> 0303> 0203> 0204> 0105> 0106> 0107> 0207> 0308> 0408> 0409> 0308> 0309> 0409> 0410> 0411> 0511> 0611> 0812> 0912> 1012> 1112> 1012> 0912> 1013> 1012> 1112> 1212> 1312> 1313> 1213> 1313> 1312> 1412> 1313> 1312> 1413> 1313> 1213> 1313> 1312> 1112> 1012> 0911&GT 1011 GT; 1112> 1312> 1412> 1312> 1413> 1313> 1312> 1212> 1112> 0911> 0811> 0711> 0511> 0411> 0312> 0212> 0312> 0411> 0511> 0611> 0612> 0413> 0513> 0612> 0611> 0411> 0312> 0212> 0213> 0212> 0213> 0113> 0213> 0113
我希望我的输入字符串与字符串A进行比较。
见下面的例子:
如果我比较A和B,没问题,发现两个最常见的子串,快乐!
getLongestCommonSubstring(c(A,B))
[1] "07>0106>0105>0204>0304>0503>060" "12>1012>1112>1212>1412>1313>141"
但是,如果我比较A和C,就会发生一些事情,因为你可以看到结果,
我最后得到\xc1
或!
,这些特殊的角色每次都会改变。
执行第一次:
getLongestCommonSubstring(c(A,C))
[1] "04>1003>1002>1001>1002>1\xc1" ">0603>0503>0403>0303>020!"
执行第二次:
getLongestCommonSubstring(c(A,C))
[1] "04>1003>1002>1001>1002>11" ">0603>0503>0403>0303>020!"
执行第三次:
getLongestCommonSubstring(c(A,C))
[1] "04>1003>1002>1001>1002>1\xc1" ">0603>0503>0403>0303>020\xc1"
使用字符串中的这些特殊字符或转义字符,我无法执行nchar()
函数之类的任务,这些字符是冗余且烦人的。
对我而言,B和C之间的唯一区别是它们的长度,它们的格式是一样的,我真的无法弄清楚为什么会发生这种情况。