Two-gram (暴力选子串+kmp)

JavaFX - 动画 JavaFX 动画 阅读详情

Two-gram

Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, "AZ", "AA", "ZA" — three distinct two-grams.

You are given a string s

consisting of n capital Latin letters. Your task is to find any two-gram contained in the given string as a substring (i.e. two consecutive characters of the string) maximal number of times. For example, for string s = "BBAABBBA" the answer is two-gram "BB", which contained in s

three times. In other words, find any most frequent two-gram.

Note that occurrences of the two-gram can overlap with each other.

Input

The first line of the input contains integer number n

(2≤n≤100) — the length of string s. The second line of the input contains the string s consisting of n

capital Latin letters.

Output

Print the only line containing exactly two capital Latin letters — any two-gram contained in the given string s

as a substring (i.e. two consecutive characters of the string) maximal number of times.

Examples
Input
7
ABACABA
Output
AB
Input
5
ZZZAA
Output
ZZ
Note

In the first example "BA" is also valid answer.

In the second example the only two-gram "ZZ" can be printed because it contained in the string "ZZZAA" two times.

子串长度是2,所以直接暴力选子串,然后kmp匹配不断更新出现次数最多的子串为答案

我的思路很简单,暴力枚举子串,kmp找出现次数,写起来相对复杂,当然也可以暴力找出现次数时间复杂度都是可以的

code:

#include <bits/stdc++.h>
using namespace std;
int n;
char s[120];
char w[4];
char ans[4];
int Next[120];
int maxt;
void getNext(){
    int i = -1,j = 0;
    Next[0] = -1;
    while(j < 2){
        if(i == -1 || w[i] == w[j]){
            i++,j++;
            if(w[i] == w[j]) Next[j] = Next[i];
            else Next[j] = i;
        }
        else
            i = Next[i];
    }
}
void kmp(){
    getNext();
    int i = 0,j = 0;
    int cnt = 0;
    while(j < n){
        if(i == -1 || s[j] == w[i]){
            i++,j++;
        }
        else
            i = Next[i];
        if(i == 2) cnt++;
    }
    if(cnt > maxt){
        maxt = cnt;
        strcpy(ans,w);
    }
}
int main(){
    scanf("%d",&n);
    scanf("%s",s);
    maxt = 0;
    for(int i = 0; i < n-1; i++){
        w[0] = s[i];
        w[1] = s[i+1];
        w[2] = 0;
        kmp();
    }
    printf("%s\n",ans);
    return 0;
}

下面是我队友的巧妙思路

code:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int dp[30][30];
int main(){
    int n;
    string str;
    cin >> n >> str;
    for(int i = 0; i < n-1; i++){
        int x = str[i] - 'A';
        int y = str[i+1] - 'A';
        dp[x][y]++;
    }
    int maxt = 0,Last = 0,Next = 0;
    for(int i = 0; i < 26; i++){
        for(int j = 0; j < 26; j++){
            if(maxt < dp[i][j]){
                Last = i;
                Next = j;
                maxt = dp[i][j];
            }
        }
    }
    printf("%c%c\n",Last + 'A',Next + 'A');
    return 0;
}

GlobalBuildingAtlas 建筑物白模数据下载 GlobalBuildingAtlas基于OSM开源数据构建全球建筑物3D白模,提供在线浏览和下载服务。官方资源包括GitHub项目地址和TUM数据库链接,支持行政区划检索建筑物数据。 阅读详情

相关推荐

告别手册!S32K3XX的eMIOS实战:从GPT定时到PWM输出,一个通道搞定电机控制

本文深入探讨了NXP S32K3XX系列MCU的eMIOS模块在电机控制中的高效应用。通过单通道实现PWM生成、输入捕获和定时中断三大功能,展示了如何简化BLDC电机控制硬件设计。文章结合RTD库与寄存器级编程,提供动态模式切换和性能优化方案,显著降低CPU负载。

weixin_42522374的博客 147

【语音识别学习】未分词的2-gram语言模型统计Python实现(含源码)

概述 &amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;对于语音识别来说,大体上就分为三个方面,一个是声学模型(acoustical model)的训练,一个是语言模型(language model)的训练,最后就是对给定一段语音的解码了,当然,咱们今天讨论的是第二部分,其他的就先丢到一边吧!(在这给大家打一打气,其实语言模型是这三个方面里最复

Johnson的博客 5858

[仿真实战]FDTD Solutions 8.0:从零搭建薄膜光谱分析模型

本文提供了一份基于FDTD Solutions 8.0的薄膜光谱分析模型从零搭建实战指南。通过详细步骤,手把手教你创建玻璃基底与硅薄膜的几何结构、设置仿真区域与边界条件、配置光源与监视器,并最终计算反射率与透射率光谱。内容涵盖参数扫描与优化,旨在帮助用户快速掌握FDTD仿真在纳米光子学与薄膜光学设计中的核心应用。

defi6farmer的博客 499

浅谈分词算法(2)基于词典的分词方法

目录 前言 目录 基本原理 贝叶斯公式 分词中的贝叶斯 2-gram分词举例 1-gram实例 建立前缀字典树 建立DAG 利用动态规划得到最大概率路径 动态...

weixin_30588729的博客 1093

Infineon MOSFET开关损耗计算实战指南

本文是英飞凌MOSFET开关损耗计算的实战指南。针对MOSFET发热问题,文章深入剖析了开关损耗的产生机理,并基于Infineon数据手册的关键参数,手把手推导了开通与关断损耗的工程计算公式。同时,指南强调了栅极电阻、寄生参数等实际因素对损耗的影响,并提供了从理论计算到实测优化的完整路径,帮助工程师精准评估与优化电源设计。

weixin_29212867的博客 442

不止于修改器:用Cheat Engine(CE)的Lua脚本和D3D Hook打造你的游戏辅助界面

本文深入探讨了Cheat Engine(CE)的高级功能,包括Lua脚本自动化和D3D Hook技术,帮助用户从基础内存扫描升级到开发具有专业图形界面的游戏辅助工具。通过实战示例和优化策略,展示了如何创建高效、稳定的游戏辅助系统,并打包为独立训练器。

weixin_28700411的博客 316

【自然语言处理】:n-gram模型深度理解

n-gram模型是自然语言处理里面的一个传统模型。我们来看看他是怎么实现的吧!要了解n-gram模型,我们先来看看什么是语言模型! 一.语言模型 语言模型的定义是:语言模型是一种用来预测下一个单词什么的任务。比如我们有一句话: the students opened their _______. (其中可以填写books/laptops/exam/minds),那么语言模型就是用来预测这个...

极歌科技 997

5分钟搞定JY901S与STM32通信:硬件I2C+DMA配置全流程(附OLED显示教程)

本文详细介绍了如何通过STM32硬件I2C接口配合DMA高效读取JY901S姿态传感器数据,并实现OLED实时显示。文章从硬件连接、I2C与DMA配置、通信协议解析到数据可视化,提供了完整的实战流程和避坑指南,帮助开发者快速构建高精度、低CPU占用的姿态感知系统。

weixin_29185167的博客 481

N-gram语言模型简单介绍

N-gram语言模型 考虑一个语音识别系统,假设用户说了这么一句话:“I have a gun”,因为发音的相似,该语音识别系统发现如下几句话都是可能的候选:1、I have a gun. 2、I have a gull. 3、I have a gub. 那么问题来了,到底哪一个是正确答案呢? 一般的解决方法是采用统计的方法。即比较上面的1、2和3这三句话哪一句在英语中出现的概率最高,哪句概率...

weixin_30793643的博客 656

AD56XXR系列DAC驱动设计:SPI接口、寄存器配置与嵌入式工程实践

数模转换器(DAC)是嵌入式系统实现高精度模拟控制的核心器件,其性能取决于通信协议可靠性、寄存器配置准确性及硬件协同设计能力。基于SPI总线的电压输出型DAC广泛应用于工业控制、光模块偏置、传感器校准等场景,需兼顾静态精度、动态响应与低功耗特性。AD56XXR系列作为典型集成内部基准与多通道同步更新能力的12/14/16位DAC,支持轨到轨输出与灵活掉电模式,为资源受限MCU提供可移植固件范式。本文围绕SPI时序约束、16位指令字解析、LDAC同步机制及精度补偿策略展开,覆盖从硬件连接、初始化流程到量产级可

weixin_33481022的博客 610

RT-DETR算法优化改进:DCNv4更快收敛、更高速度、更高性能,效果秒杀DCNv3、DCNv2等 ,助力检测

DCNv4更快收敛、更高速度、更高性能,完美和RT-DETR结合,助力涨点

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1323

统计分词/无字典分词学习(2):n-gram词频统计

我们现在面对的是“wheninthecourseofhumaneventsitbecomesnecessary”这样一堆语料,要获取词典,怎么办? 第一步肯定是找到所有可能是词的片段了,常用的方法就是n-gram切分了,如假设词的最大长度是3,则句子“abcd”的n-gram切分就是: 1-gram切分:a b c d 2-gram切分:ab bc cd 3-gram切分:abc bcd

wangliang_f的专栏 8127

手把手入门YOLO到改进优化教程 | 【P6进阶篇】YOLOv8模型剪枝优化实战-LAMP剪枝

本节首先介绍LAMP剪枝相关理论。然后结合YOLO框架,手把手搭建剪枝工程,包括配置文件修改、剪枝脚本构建等内容。

嵌入式阿齐Archie 2万+

CodeForces - 977B:Two-gram(字符串匹配)

链接:https://vjudge.net/problem/CodeForces-977B 题目 Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, “AZ”, “AA”, “ZA” — three distinct two-grams. You are given a string consisting of capital Latin letters. Your

Mr.RainsdRop的胡思乱想 528

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

B. Two-gram

Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, "AZ", "AA", "ZA" — three distinct two-grams. You are given a stringssconsisting ofnncapital Latin letters. Your task is to findanytwo-gram contained in th...

C_Dreamy的博客 495

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

B. Two-gram(string的使用以及字符串的匹配)

B. Two-gram time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard output Two-gram is an ordered pair (i.e. string of length two) of capital Latin lette...

小自洽 682

基于 2-gram 模型的智能宋词生成系统实现与原理

本文详细介绍了一个宋词生成系统的设计与实现。该系统利用 2-gram 语言模型,结合词牌规则,实现了不同词牌宋词的自动生成。同时,系统还具备词语解释查询、生成结果导出以及历史记录查看等功能。文章从系统架构、原理、代码实现等方面进行了阐述,旨在让读者全面了解该项目的工作机制。

m0_73804764的博客 1238

二元语法(2-gram)分词中的平滑算法

从一年前的计算语言学作业开始,我一直没明白,为什么我写的二元语法分词要比一元语法差。两天来我仔细分析了一下之前的实验细节,发现二元语法分词要超过一元语法,可以有两种方式:1.超大的语料;2.强大的平滑算法。   实验采用北大人民日报1-6月语料,大约700万字,选其中90%作为训练数据,另外10%作为测试数据。先看下实验结果: 分词方法 准确率 召回率

南山牧笛的博客 2578

学习笔记:简单理解N—gram模型

N-gram 模型是一种用于自然语言处理的统计模型,用于预测一个词序列中下一个词的出现概率。所以我们可以选择到概率最高的结果,预测“喜欢”的下一个词是“学习”。P(编程|喜欢)=C(喜欢编程)/C(喜欢)=1/6=0.16。P(学习|喜欢)=C(喜欢学习)/C(喜欢)=3/6=0.5。P(吃|喜欢)=C(喜欢吃)/C(喜欢)=2/6=0.33。文本1:我喜欢学习物理,喜欢学习化学,喜欢学习生物。假设我们的第一个词是“喜欢”,接下来去预测下一个词。:考虑两个连续词,模型根据前一个词预测当前词。

2303_79066357的博客 490

Codeforces--977B--Two-gram

题目描述: Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, “AZ”, “AA”, “ZA” — three distinct two-grams. You are given a string s consisting of n capital Latin...

猩猩是个好程序员的博客 411

Codeforces Round #657 (Div. 2)题解总结

文章目录A. Acacius and StringB. Dubious CyrptoC. Choosing flowers A. Acacius and String time limit per test1 second memory limit per test512 megabytes inputstandard input outputstandard output Acacius is studying strings theory. Today he came with the followin

SDAU_LGX的博客 826

[八中测试]AtCoder ABC093

A - abc of ABC Problem Statement You are given a string S of length 3 consisting of a, b and c. Determine if S can be obtained by permuting abc. Constraints |S|=3 S consists of a, b and c. I

你的心,如何追逐? 1175

词向量表征

fastText原理及实践 - 知乎【文章作者】 王江 【作者简介】 达观数据自然语言处理工程师,负责达观NLP底层开发、私有化应用系统开发等工作。主要参与大型系统的开发,对机器学习、NLP等领域有浓厚兴趣。 fastText是Facebook于2016年开源的一…https://zhuanlan.zhihu.com/p/32965521本文参考以上链接 1、Word2Vec (1)CBOW:用上下文预测目标词汇 Input layer:上下文单词的onehot,其中C为输入上下文单词的个数.

你礼貌吗 661

codeforce-----Two-gram

Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, “AZ”, “AA”, “ZA” — three distinct two-grams. You are given a string ss consisting of nn capital Latin let...

qq_45772483的博客 329

Two-gram (思维)

Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, "AZ", "AA", "ZA" — three distinct two-grams.You are given a string s consisting of n capital Latin letter...

码农的一亩三分地 1650

Two-gram(CF-977B)

Problem Description Two-gram is an ordered pair (i.e. string of length two) of capital Latin letters. For example, "AZ", "AA", "ZA" — three distinct two-grams. You are given a string sconsisting o...

Alex_McAvoy的博客 534
上一篇: HEX(第八届山东省赛,思维+组合数)
下一篇: Face The Right Way POJ - 3276(反转问题,开关问题)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值