第十届蓝桥杯JavaB组试题H人物相关性分析

试题 H: 人物相关性分析 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分
【问题描述】 小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice 和 Bob 有多少次同时出现。 更准确的说,小明定义 Alice 和 Bob“同时出现”的意思是:在小说文本 中 Alice 和 Bob 之间不超过 K 个字符。 例如以下文本: ThisisastoryaboutAliceandBob.AlicewantstosendaprivatemessagetoBob. 假设 K = 20,则 Alice 和 Bob 同时出现了 2 次,分别是”Alice and Bob” 和”Bob. Alice”。前者 Alice 和 Bob 之间有 5 个字符,后者有 2 个字符。 注意: 1. Alice 和 Bob 是大小写敏感的,alice 或 bob 等并不计算在内。 2. Alice 和 Bob 应为单独的单词,前后可以有标点符号和空格,但是不能 有字母。例如 Bobbi 並不算出现了 Bob。
【输入格式】
第一行包含一个整数 K。 第二行包含一行字符串,只包含大小写字母、标点符号和空格。长度不超 过 1000000。
【输出格式】 输出一个整数,表示 Alice 和 Bob 同时出现的次数。
【样例输入】 20 ThisisastoryaboutAliceandBob.AlicewantstosendaprivatemessagetoBob.
【样例输出】 2
【评测用例规模与约定】 对于所有评测用例,1≤ K ≤1000000。


嘻嘻嘻~我又来了,今天做了这个题,然后遇到问题了…在网上找了一圈发现许多分享的代码只满足题目,变换输入就不满足了…于是只能靠自己了(小白苦思冥想…),放代码了和大家分享,如有错误,欢迎指正!!!(我的代码很简单,嘻嘻嘻)

public class Test5 {
//试题H:人物相关性分析
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		String n=sc.nextLine();
		int k=Integer.parseInt(n);
		String str=sc.nextLine();
		sc.close();
		char[] ch=str.toCharArray();
		int a = 0,b = 0,count=0;
		boolean key=false;
		for(int i=0;i<ch.length;i++) {
			if(ch[i]=='A'&&ch[i+1]=='l'&&ch[i+2]=='i'&&ch[i+3]=='c'
			&&ch[i+4]=='e'&&!((int)ch[i+5]>=97&&(int)ch[i+5]<=122)
			&&!((int)ch[i+5]>=65&&(int)ch[i+5]<=90)) {
				a=i;
				if(a==0) {
					key=true;
				}
				if(b!=0||key==true) {
					key=false;
					int s=b+3;
					if(a-s<=k) {
						count++;
					}
				}
			}
			if(ch[i]=='B'&&ch[i+1]=='o'&&ch[i+2]=='b'&&!((int)ch[i+3]>=97
			&&(int)ch[i+3]<=122)&&!((int)ch[i+3]>=65&&(int)ch[i+3]<=90)){
				b=i;
				if(b==0) {
					key=true;
				}
				if(a!=0||key==true){
				key=false;
				int s=a+5;
				  if(b-s<=k) {
				  count++;
				  }
				}
			}
		}
		System.out.println(count);
	}

}

我的测试来咯!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

发布了4 篇原创文章 · 获赞 0 · 访问量 64

猜你喜欢

转载自blog.csdn.net/weixin_43378573/article/details/104534882