【问题标题】:Regular Expression three characters in sequence and not repeated in the string正则表达式三个字符按顺序排列,在字符串中不重复
【发布时间】:2014-04-15 16:12:15
【问题描述】:

我尝试使用正则表达式解决以下问题,但不能(最终使用其他方法):

http://community.topcoder.com/stat?c=problem_statement&pm=13006&rd=15846

给定一个字符串,您必须检查是否按顺序包含字符CAT,并且每个字符只出现一次。可以是这些字符之间的其他字符。 例如:

CTA -> false
XCYAZTX -> true
ACBBAT -> false
CATT -> false
CCAT -> false
CAAT -> false
CAT -> true

所以,应该是:

public String getAnswer(String S) {
   if(S.matches("pattern???")) return "Possible";
   return "Impossible";
}

有人知道要使用的模式并可以分享吗?

【问题讨论】:

    标签: java regex regex-negation


    【解决方案1】:

    你会使用这样的模式:

    ^[^CAT]*C[^CAT]*A[^CAT]*T[^CAT]*$
    

    【讨论】:

    • 谢谢。只是等待超过时间限制,所以我可以检查你的答案是否正确。
    【解决方案2】:

    这个正则表达式应该适合你:

    "(?m)^[^CAT]*C[^CAT]*A[^CAT]*T[^CAT]*$"
    

    Working Demo

    【讨论】:

    • 谢谢。它也有效。阿尔坎萨回答得快了一点。这就是为什么我检查他的答案是否正确。
    • 是的,检查他的答案是公平的。我开始创建完整的演示,并花了更多时间来写我的答案,最终晚了 17 秒发布了我的答案:)
    • +1 用于完整的演示正确的正则表达式。花了十七秒!
    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 2019-10-29
    • 1970-01-01
    • 2012-12-18
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    相关资源
    最近更新 更多