Java在codechef中包含字符串搜索问题
我是个新手。试着解决一个简单的问题 复制以下问题陈述以便于参考: 厨师正在读一些名人的名言。现在,他感兴趣的是对他所知道的所有花哨名言进行分类。他认为所有包含“不”一词的花里胡哨的引语都是真正的花里胡哨;不包含它的引用通常是花哨的 给你一些引语。对于每一个报价,你需要告诉厨师它是真正的花式,还是经常的花式 输入 输入的第一行包含一个表示测试用例数量的整数T。T测试用例的描述如下。 每个测试用例的第一行也是唯一一行包含一个表示引号的字符串 输出 对于每个测试用例,打印一行包含字符串“Real Fancy”或“Regulary Fancy”(不带引号) 约束 1.≤T≤50 1.≤||≤100 S的每个字符都是小写英文字母或空格 子任务 子任务#1(100点):原始约束 示例输入 二, 我没有任何花言巧语 当什么都不向右转时,向左走 示例输出 真正的幻想 经常幻想 下面是我的解决方案,它在我的机器上本地运行良好,但当我尝试在codechef上运行时,会出现NZEC异常。提交此解决方案会导致“回答错误”。使用try/catch块,因为我读到它将避免异常,但仍然回答不正确。我不明白在这个简单的问题上我错在哪里Java在codechef中包含字符串搜索问题,java,string,search,contains,string-matching,Java,String,Search,Contains,String Matching,我是个新手。试着解决一个简单的问题 复制以下问题陈述以便于参考: 厨师正在读一些名人的名言。现在,他感兴趣的是对他所知道的所有花哨名言进行分类。他认为所有包含“不”一词的花里胡哨的引语都是真正的花里胡哨;不包含它的引用通常是花哨的 给你一些引语。对于每一个报价,你需要告诉厨师它是真正的花式,还是经常的花式 输入 输入的第一行包含一个表示测试用例数量的整数T。T测试用例的描述如下。 每个测试用例的第一行也是唯一一行包含一个表示引号的字符串 输出 对于每个测试用例,打印一行包含字符串“Real Fa
/* 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异常的原因。那是行不通的。以测试用例->他不能去为例。这里“不能”是有规律的幻想,而不是真正的幻想,因为它不包含不作为词,尽管它不包含字符序列。请考虑对答案进行投票。