zoukankan      html  css  js  c++  java
  • Java实现第十届蓝桥杯人物相关性分析

    试题 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 This is a story about Alice and Bob.Alice wants to send aprivate message to Bob.

    这道题最大的坑在于,你直接从PDF中复制下来, 他会没有空格,很多人做的时候会忽视这一点
    import java.util.Scanner;
    
    
    public class renwuxiangguanxing {
    	  public static void main(String[] args)  {
    	        Scanner reader=new Scanner(System.in);
    	        int res=0;    //save result
    	        int K=reader.nextInt();
    	        reader.nextLine();    //nextLine吸取回车键
    	        String str=reader.nextLine();
    	        String words[]=str.split("\s+|\.");    //以空格和.分割出来,注意.空格的组合存放为空字符串
    	        
    	        //    Alice------>Bob
    	        for(int i=0;i<words.length;i++){
    	            if(words[i].equals("Alice")){
    	                for(int j=i+1;j<words.length;j++){
    	                    if(words[j].equals("Bob")){
    	                        int sum=1;    //这里要等于1
    	                        for(int k=i+1;k<j;k++){
    	                            sum+=words[k].length()+1;
    	                        }
    	                        if(sum<=K){
    	                            res++;
    	                        }
    	                    }
    	                }
    	            }
    	        }
    	        
    	        //Bob--------->Alice
    	        for(int i=0;i<words.length;i++){
    	            if(words[i].equals("Bob")){
    	                for(int j=i+1;j<words.length;j++){
    	                    if(words[j].equals("Alice")){
    	                        int sum=1;    //这里要等于1
    	                        for(int k=i+1;k<j;k++){
    	                            sum+=words[k].length()+1;
    	                        }
    	                        if(sum<=K){
    	                            res++;
    	                        }
    	                    }
    	                }
    	            }
    	        }
    	        System.out.println(res);
    	    }
    
    }
    
    
  • 相关阅读:
    uptime---系统总共运行时间和系统的平均负载
    top---实时动态地查看系统的整体运行情况
    dmesg---检查和控制内核的环形缓冲区
    sysctl---内核参数相关设置
    C++笔记011:C++对C的扩展——变量检测增强
    C++笔记010:C++对C的扩展——register关键字增强
    C++笔记009:C++对C的扩展——“实用性”增加
    C++笔记008:C++对C的扩展——命名空间 namespace基础
    C++笔记007:易犯错误模型——类中为什么需要成员函数
    C++笔记006:关于类的补充
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13077596.html
Copyright © 2011-2022 走看看