Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
确定一个字符串的结尾是否与另一个字符串的开头相同(带或不带regex;Java)_Java_Text Alignment - Fatal编程技术网

确定一个字符串的结尾是否与另一个字符串的开头相同(带或不带regex;Java)

确定一个字符串的结尾是否与另一个字符串的开头相同(带或不带regex;Java),java,text-alignment,Java,Text Alignment,我想将一个字符串的开头与另一个字符串的结尾进行匹配,我在internet上找不到解决方案,假设我有以下序列: 我必须这样做: seq1 = AAATAAA seq2 = AAATTTT 我想检查seq1的结尾部分是否与seq2的开头部分匹配。这样的测试:: AAATAAA AAATTTT //--> so I want to match AAA //and also check the other way around: AAATTTT AAATAAA //--

我想将一个字符串的开头与另一个字符串的结尾进行匹配,我在internet上找不到解决方案,假设我有以下序列:

我必须这样做:

seq1 = AAATAAA
seq2 = AAATTTT
我想检查seq1的结尾部分是否与seq2的开头部分匹配。这样的测试:

AAATAAA
    AAATTTT  //--> so I want to match AAA

//and also check the other way around:
AAATTTT
       AAATAAA //-->no match
我尝试将字符串转换为完全可选的正则表达式,如:

(A?A?A?T?T?T?T?)$ //from seq1
(A?A?A?T?A?A?A?)$ //from seq2
但是,这将无法正常工作:

(A?A?A?T?T?T?T?)$ //--> matches AAA = correct  
(A?A?A?T?A?A?A?)$ //--> matches T   = not correct!

这可以通过使用正则表达式来解决,该正则表达式只允许在前面的字符匹配时进行匹配(如果可能)。因此,如果这是可能的,它将不匹配
(A?A?A?T?A?A?A?)$
,因为
AAA
不匹配。我想用regex解决这个问题,但是也欢迎不使用regex的解决方案

对于正则表达式来说,这似乎不是一个合适的问题。我已经怀疑使用regex@JonathonReinhartI是否可能继续。试图在这个钉子上使用螺丝刀是没有意义的。正则表达式只能处理1个输入,但您有2个。这可能是可能的,但请显示一个输入以及您想要匹配和捕获的内容(如果有)。找到O(n^2)解决方案很简单,下面的答案中有示例。您的序列将有多长(对于短序列,将事情过度复杂化是没有意义的)?您是否会对多个输入对彼此进行检查?例如,1个序列与10个或100个重复使用的匹配项(以便预处理可以分摊其成本)?对于正则表达式来说,这似乎不是一个合适的问题。我已经怀疑使用regex@JonathonReinhartI是否可能继续。试图在这个钉子上使用螺丝刀是没有意义的。正则表达式只能处理1个输入,但您有2个。这可能是可能的,但请显示一个输入以及您想要匹配和捕获的内容(如果有)。找到O(n^2)解决方案很简单,下面的答案中有示例。您的序列将有多长(对于短序列,将事情过度复杂化是没有意义的)?您是否会对多个输入对彼此进行检查?例如,1个序列与10个或100个重复使用的匹配项(以便预处理可以分摊其成本)?