如果你接受这个任务,你需要编写一个Perl正则表达式,对于给定的字符串,它将返回第一个不连续重复的字符。换句话说,该字符前后都有与其不同的字符(或者分别是字符串的开头/结尾)。
例如:
请注意,“not consecutively duplicated”并不意味着“在字符串的任何位置都不重复”。
注意:它必须是一个纯正则表达式。例如,显然会想到的解决方案(克隆字符串,删除所有重复项,并打印第一个剩余字符)不算数,尽管它解决了问题。
这个问题是受到我有些离题的回答的启发:如何使用Perl找到字符串中第一个不重复的字符?
例如:
IN: aabbcdecc
OUT: c
请注意,“not consecutively duplicated”并不意味着“在字符串的任何位置都不重复”。
注意:它必须是一个纯正则表达式。例如,显然会想到的解决方案(克隆字符串,删除所有重复项,并打印第一个剩余字符)不算数,尽管它解决了问题。
这个问题是受到我有些离题的回答的启发:如何使用Perl找到字符串中第一个不重复的字符?
perl -e "\"aabbcdecc\" =~ m/(?:(.)\1+)*(.?)/; print \$2;"
输出c
; @spongperl -e "\"abcdefg\" =~ m/(?:(.)\1+)*(.?)/; print \$2;"
输出a
。我不知道为什么你们会出错。 - kennytm