分析
- 需要注意此题是前半句的最后一个单词和后半句的最后一个单词都要是ong结尾;
- 不能直接获取每句后两个单词后,直接分别contains去判断是否包含ong,这样有bug,比如说最后一个单词为ongx.,那么用contains就会被误认为是押韵;所以我们需要逐个去分析后三个字符(不包括标点符号),或者截取后三个字符来判断是否是ong;
- 注意此题,前半句和后半句最后一个单词要满足 >=4个字符,因为这里的前半句最后一个单词为"xxx,",后半段是“xxx.”
- 另外我的代码有点冗余,可以利用substring去截取那三个字符去进行判断;而且也可以再利用“,”进行分隔去找前半句最后一个单词,而不用去遍历的查找索引;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine();
for (int i = 0; i < n; i++) {
String s = sc.nextLine();
String[] str = s.split(" ");
int index = 0;//用来找上半句的最后一个单词
for (int j = 0; j < str.length; j++)
if (str[j].contains(","))
index = j;
String ss1 = str[index];
int q = ss1.length() - 2;//从‘,’前的一个字符倒着分析
int len = str.length;//最后一个单词个数
String ss = str[len - 1];//分析最后一个单词
int p = ss.length() - 2;//从‘.’前的一个字符倒着分析
//前半段最后一个单词要满足 超过4个字符
if (ss1.length() >= 4 && ss.charAt(p - 2) == 'o' && ss.charAt(p - 1) == 'n' && ss.charAt(p) == 'g' && ss1.charAt(q - 2) == 'o' && ss1.charAt(q - 1) == 'n' && ss1.charAt(q) == 'g') {
int l = str[len - 1].length() + str[len - 2].length() + 1 + str[len - 3].length() + 1;//后三个单词的字符串长度(空格不能忘)
System.out.print(s.substring(0, s.length() - l));//总字符串长度减去后三个单词的字符串长度
System.out.println("qiao ben zhong.");
} else
System.out.println("Skipped");
}
}
}