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

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

试题 H: 人物相关性分析
时间限制: 1.0s 内存限制: 512.0MB 本题总分: 20
【问题描述】
小明正在分析一本小说中的人物相关性。他想知道在小说中 Alice Bob有多少次同时出现。
更准确的说,小明定义 Alice Bob“同时出现”的意思是:在小说文本中 Alice Bob 之间不超过 K 个字符。
例如以下文本:
This is a story about Alice and Bob. Alice wants to send a private message to Bob.
假设 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 a private message to Bob.

【样例输出】
2
【评测用例规模与约定】
对于所有评测用例, 1 K 1000000

 

借鉴:https://blog.csdn.net/malimingwq/article/details/88953526

在Java的String类中有个用于分割字符串的方法split(String regex):String[],将此方法用于以空格.分割输入的字符串,然后枚举返回的String[],找到配对的Alice和Bob,还可以方便的统计每对组合间间隔的字符串长度。

import java.util.Scanner;

public class Main{
    
    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);
    }
    
}

 

转载于:https://www.cnblogs.com/chiweiming/p/10674087.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/100995.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 【12】进大厂必须掌握的面试题-持续测试面试

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 Q1。什么是连续测试? 我将建议您遵循以下提到的解释:连续测试是作为软件交付管道的一部分执行自动测试的过程,以获得与…

    2021年6月23日
    83
  • RabbitVCS安装

    RabbitVCS安装给大家推荐使用RabbitVCS,类似与TortoiseSVN。下面具体安装RabbitVCS的方法步骤如下:第一步:sudoadd-apt-repositoryppa:rabbitvcs/ppa第二步:根据第一步的情况来是否跳过该步骤,如果第一步出现导入key,那第二步可以跳过,否则需要导入keysudoapt-keyadv–keyserverkeyserver.u

    2022年7月18日
    34
  • tomcat的contextpath可以重复吗_tomcat deployment配置

    tomcat的contextpath可以重复吗_tomcat deployment配置本文章转载自https://www.cnblogs.com/yanan7890/p/8329163.htmltomcatserver.xmlcontextpath配置需要注意的事情在tomcat下放个war包,假如我是这样配置server.xml的,<ContextdocBase=”eggchina”path=”/yanan”reloadable=”true”sou…

    2025年12月15日
    3
  • MySQL (4) 第一范式 第二范式 第三范式 BC范式

    MySQL (4) 第一范式 第二范式 第三范式 BC范式第一范式第一范式:所有属性都是不可分割的原子值。也就是每个属性都是不可再分的。例如下图就不符合第一范式的要求实际上,1NF是所有关系型数据库的最基本要求,你在关系型数据库管理系统(RDBMS),例如SQLServer,Oracle,MySQL中创建数据表的时候,如果数据表的设计不符合这个最基本的要求,那么操作一定是不能成功的。如果我们要在RDBMS中表现表中的数据,就得设计为下图的

    2022年5月23日
    50
  • c语言入门教程–-14二维数组

    c语言入门教程–-14二维数组

    2021年3月12日
    208
  • OutOfMemory及其解决方法「建议收藏」

    一、内存溢出类型1、java.lang.OutOfMemoryError:PermGenspaceJVM管理两种类型的内存,堆和非堆。堆是给开发人员用的上面说的就是,是在JVM启动时创建;非堆是留给JVM自己用的,用来存放类的信息的。它和堆不同,运行期内GC不会释放空间。如果webapp用了大量的第三方jar或者应用有太多的class文件而恰好MaxPermSize设置较小,

    2022年4月10日
    723

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号