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


相关推荐

  • 梯度下降学习率的设定策略

    梯度下降学习率的设定策略发现一篇写的很好的关于学习率的文章本文转载自卢明冬的博客-梯度下降学习率的设定策略1.学习率的重要性1)学习率设置太小,需要花费过多的时间来收敛2)学习率设置较大,在最小值附近震荡却无法收敛到最小值3)进入局部极值点就收敛,没有真正找到的最优解4)停在鞍点处,不能够在另一维度继续下降梯度下降算法有两个重要的控制因子:一个是步长,由学习率控制;一个是方向,由梯度指定。2.学习率的设定…

    2022年5月2日
    77
  • c语言之异或运算_c语言运算符优先级表

    c语言之异或运算_c语言运算符优先级表c语言之异或运算异或运算,计算机相关专业比较熟悉了。相同为0,不同为1.结合计算机内部的位运算,a^a=0;与本身异或是为0的。有关的知识运用到数据交互中去。voidint_swap(int*x,int*y){ *y=*x^*y;//step1 *x=*x^*y;//step2 *y=*x^*y;//step3}运用这个函数就能完成两个数据交换。但是并没有提高时间复杂度和空间复杂度,有关书籍上称之为智力游戏。我们来看看数据的变化。假设*x=a,*y=b.*x*y

    2025年6月14日
    2
  • 十天学会php第五天

    十天学会php第五天

    2022年1月11日
    41
  • m.2接口sata和pcie区别_M2固态硬盘安装方法

    m.2接口sata和pcie区别_M2固态硬盘安装方法http://mst.zol.com.cn/615/6150989.html犹记得当年Windows7系统体验指数中,那5.9分磁盘分数,在其余四项的7.9分面前,似乎已经告诉我们机械硬盘注定被时代

    2022年8月3日
    11
  • mysql resulttype_MyBatis-resultType 与 resultMap 中的几种返回类型「建议收藏」

    一、返回集合1.返回JavaBean集合publicListselectMyUserByNameLike(Stringname);select*frommyuserwherenamelike#{name}测试方法publicstaticvoidmain(String[]args){SqlSessionsession=null;try{InputStreaminpu…

    2022年4月12日
    185
  • u盘文件夹exe病毒彻底_u盘中病毒文件变成快捷方式怎么办

    u盘文件夹exe病毒彻底_u盘中病毒文件变成快捷方式怎么办笔者在使用U盘时,无意之间发现U盘所有文件的后缀名均变为“.exe”,经过查询相关资料,确认这是一种病毒(文件夹EXE病毒)一、简介:木马名称:Worm.Win32.AutoRun.soq,当把U盘插入到一台电脑后,U盘内生成了以原文件夹名字命名的文件,且扩展名为exe,其原理是把原来的文件隐藏,重新生成同名的exe文件。二、解决方案:百度下载USBCleaner,根据软件提示进行操作即可完…

    2025年7月29日
    2

发表回复

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

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