试题 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pycharm所有文件中查找_python查找文件

    pycharm所有文件中查找_python查找文件PyCharm的FindinPath功能提供了全局查找功能,快捷键为Ctrl+Shift+F。Find则是在当前文件查找,快捷键为Ctrl+F。这两个个功能非常实用。FindinPath的使用:按快捷键Ctrl+Shift+F或从从菜单Edit-》Find-》FindinPath进入全局查找界面。如下图所示,在Texttofind输入要查找的内容,可以说某

    2022年8月25日
    80
  • [原创]-数据仓库ETL开发

    [原创]-数据仓库ETL开发ETL开发概述ETL是数据仓库的后台,主要包含抽取、清洗、规范化、提交四个步骤,传统数据仓库一般分为四层模型。分层的作用:1.划分ETL阶段工作重心,便于管理2.降低开发和维护成本3.减…

    2022年6月4日
    31
  • 树莓派简单教程(一)「建议收藏」

    树莓派简单教程(一)「建议收藏」一、什么是树莓派基于ARM的微型电脑主板,其系统基于linux二、树莓派能做什么2.1挖矿【树莓派:居然拿我干这事?———6分钟使用树莓派,编译CPU挖矿程序测试算力。-哔哩哔哩】https://b23.tv/tvx06lM…

    2022年10月14日
    0
  • docker-jenkins部署cmake自动构建[通俗易懂]

    docker-jenkins部署cmake自动构建[通俗易懂]docker部署jenkins具体部署参考链接dockerrun-itd-p8080:8080-p50000:50000–namejenkins–privileged=true-v/var/jenkins_home:/var/jenkins_homejenkins/jenkins工程配置源码管理:添加git地址通过URL访问触发构建构建脚本这里的$WORKSPACE对应docker映射到本地的目录/var/jenkins_home/workspace/te

    2022年6月1日
    141
  • android自定义滑块解锁,android 滑动解锁

    android自定义滑块解锁,android 滑动解锁通过android自定义View实现横向的滑动解锁,1、滑动到中间会自动返回到原始的位置,2、滑动到底部会自动解锁,会触发解锁的回调;首先看效果图如下:实现以上部分一共分为三部分:其中背景通过shape.xml实现滑动的锁是一张图片文字通过Paint绘制在中间,高度可定制主要介绍一下实现的主要部分:(1)有自定义的属性如下:(2)重写ondraw()方法,绘制文字和锁:@Overrideprote…

    2022年6月28日
    21
  • 常用dos命令(八)–COPY命令

    常用dos命令(八)–COPY命令今天的是copy(复制)命令,说起这个命令,也许你没使用过这个命令,但是平常生活与工作中总会长期用到ctrl+c和ctrl+v这两个功能吧。下面是几个小例子:1、将桌面的hello.txt文件复制到d盘:c:\Users\DT236\Desktop>copyhello.txtd:2、将多个文件合并在一个文件里面:c:\Users\DT236\Desktop>copyh

    2022年7月18日
    21

发表回复

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

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