Java在codechef中包含字符串搜索问题

Java在codechef中包含字符串搜索问题,java,string,search,contains,string-matching,Java,String,Search,Contains,String Matching,我是个新手。试着解决一个简单的问题 复制以下问题陈述以便于参考: 厨师正在读一些名人的名言。现在,他感兴趣的是对他所知道的所有花哨名言进行分类。他认为所有包含“不”一词的花里胡哨的引语都是真正的花里胡哨;不包含它的引用通常是花哨的 给你一些引语。对于每一个报价,你需要告诉厨师它是真正的花式,还是经常的花式 输入 输入的第一行包含一个表示测试用例数量的整数T。T测试用例的描述如下。 每个测试用例的第一行也是唯一一行包含一个表示引号的字符串 输出 对于每个测试用例,打印一行包含字符串“Real Fa

我是个新手。试着解决一个简单的问题 复制以下问题陈述以便于参考:

厨师正在读一些名人的名言。现在,他感兴趣的是对他所知道的所有花哨名言进行分类。他认为所有包含“不”一词的花里胡哨的引语都是真正的花里胡哨;不包含它的引用通常是花哨的

给你一些引语。对于每一个报价,你需要告诉厨师它是真正的花式,还是经常的花式

输入 输入的第一行包含一个表示测试用例数量的整数T。T测试用例的描述如下。 每个测试用例的第一行也是唯一一行包含一个表示引号的字符串

输出 对于每个测试用例,打印一行包含字符串“Real Fancy”或“Regulary Fancy”(不带引号)

约束 1.≤T≤50 1.≤||≤100 S的每个字符都是小写英文字母或空格 子任务 子任务#1(100点):原始约束

示例输入

二,

我没有任何花言巧语

当什么都不向右转时,向左走

示例输出

真正的幻想

经常幻想

下面是我的解决方案,它在我的机器上本地运行良好,但当我尝试在codechef上运行时,会出现NZEC异常。提交此解决方案会导致“回答错误”。使用try/catch块,因为我读到它将避免异常,但仍然回答不正确。我不明白在这个简单的问题上我错在哪里

/* package codechef; // don't place package name! */

import java.util.Scanner;

public class Main
{
    private final static String REAL_FANCY   = "Real Fancy\n";
    private final static String REGULARLY_FANCY  = "regularly fancy\n";
    private final static String MATCH_WORD   = " not "; //note: space both sides
    private final static String MATCH_WORD_START = "not "; //note: space at end
    private final static String MATCH_WORD_END   = " not";//note: space at start

    public static void main(String[] args)
    {
    try
    {
        Scanner scanner = new Scanner(System.in);
        int testCases = Integer.parseInt(scanner.nextLine());

        StringBuilder output = new StringBuilder();
        String str = null;
        for (int i = 0; i < testCases; i++)
        {
        str = scanner.nextLine();
        if (str.startsWith(MATCH_WORD_START) || str.contains(MATCH_WORD)
            || str.endsWith(MATCH_WORD_END))
            output.append(REAL_FANCY);
        else
            output.append(REGULARLY_FANCY);
        }
        scanner.close();
        System.out.println(output.substring(0, output.length() - 1));
    }
    catch (Exception e)
    {
    }
    }
}
/*包编解码器;//不要放置包名*/
导入java.util.Scanner;
公共班机
{
私有最终静态字符串REAL\u FANCY=“REAL FANCY\n”;
private final static String regulatory\u FANCY=“regulatory FANCY\n”;
private final static String MATCH_WORD=“not”//注意:两边空格
private final static String MATCH\u WORD\u START=“not”//注意:末尾有空格
private final static String MATCH\u WORD\u END=“not”;//注意:开头有空格
公共静态void main(字符串[]args)
{
尝试
{
扫描仪=新的扫描仪(System.in);
int testCases=Integer.parseInt(scanner.nextLine());
StringBuilder输出=新的StringBuilder();
字符串str=null;
for(int i=0;i
您的代码有一个逻辑问题,因为它失败了。只需将
'not'
(注意空格)识别为一个花哨的单词即可

您可以更改
if
逻辑并使用正则表达式

if (str.matches(".*\\bnot\\b.*")) {
    output.append(REAL_FANCY);
} else {
    output.append(REGULARLY_FANCY);
}

这里regex模式只匹配整个单词,而不是。有关此正则表达式的详细说明,请参见

不能是经常性的幻想还是真正的幻想?还有,我们可以在codechef上运行您的代码片段吗?“cannot”通常是花哨的,不是真正的花哨,因为它不包含NOT as word,尽管它包含NOT as char序列。是的,代码可以在codechef上运行,这就是我得到NZEC异常的原因。那是行不通的。以测试用例->他不能去为例。这里“不能”是有规律的幻想,而不是真正的幻想,因为它不包含不作为词,尽管它不包含字符序列。请考虑对答案进行投票。