笔试刷题-头条

2023-05-16

题目描述:

/**
【编码题】
字符串S由小写字母构成,长度为n。定义一种操作,
每次都可以挑选字符串中任意的两个相邻字母进行交换。
询问在至多交换m次之后,字符串中最多有多少个连续的位置上的字母相同?

输入描述:
第一行为一个字符串S与一个非负整数m。(1 <= |S| <= 1000, 1 <= m <= 1000000)

输出描述:
一个非负整数,表示操作之后,连续最长的相同字母数量。

输入例子1:
abcbaa 2

输出例子1:
2

例子说明1:
使2个字母a连续出现,至少需要3次操作。即把第1个位置上的a移动到第4个位置。
所以在至多操作2次的情况下,最多只能使2个b或2个a连续出现。
*/

思路如下:

维护一个表每个
每行存放同样字符之间的位置(按原来顺序摆放)
在位置向量中
dp[i][j] = dp[i+1][j-1] + abs(posVec[j] - posVec[i]) - (j-i);
dp[i][j]第i个数->第j个数移动的次数
base case:
dp[i][i]=0
dp[i][i+1]= abs(posVec[i+1] - posVec[i]) - 1
i<=j
这里只枚举i<=j是因为 j<=i时候其实是对称的情况

代码如下:

#include<stdio.h>
#include<iostream>
#include<vector>

#define MAX_ROW 26

using namespace std;

vector<int> posTable[MAX_ROW];

int DP(const vector<int> &posVec, int K)
{
    int n = posVec.size();
    vector< vector<int> > dp(n, vector<int>(n, 0));
    for(int i=0; i<n-1; ++i)
    {
        dp[i][i+1] = abs(posVec[i+1] - posVec[i]) - 1;
    }
    for(int j=2; j<n; ++j)
    {
        for(int i=0; i<n-j; ++i)
        {
            int row = i, col = i+j;
            dp[row][col] = dp[row+1][col-1] + abs(posVec[col] - posVec[row]) - (col-row);
        }
    }
    int Max = 0;
    for(int i=0; i<n; ++i)
    {
        for(int j=i; j<n; ++j)
        {
            if (dp[i][j] <= K)
            {
                Max = max(Max, j-i+1);
            }
        }
    }
    return Max;
}
int main()
{
    //建立posTable;
    string line;
    int K;
    cin>>line>>K;
    for(int i=0; line[i]!='\0'; i++)
    {
        if(line[i]<'a' || line[i]>'z')
            return -1;
        posTable[line[i]-'a'].push_back(i);
    }
    //找最大滑动窗口
    int maxSize=0;
    for(int i=0; i<MAX_ROW; i++)
    {
        vector<int> &pos=posTable[i];
        maxSize=max(maxSize, DP(pos, K));
    }
    printf("%d", maxSize);
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

笔试刷题-头条 的相关文章

  • linux shell脚本执行sql语句建表建库

    linux shell脚本执行sql语句建表建库 1 创建sql脚本2 创建shll脚本 1 创建sql脚本 创建contract ddl sql span class token comment 创建数据库contract user sp
  • 【Windows版】VScode配置C++开发环境

    博客已更新 xff1a Windows版 VScode配置C 43 43 开发环境 花花少年的博客 CSDN博客
  • Windows+COLMAP三维重建教程【exe安装】

    一 步骤 1 下载COLMAP COLMAP COLMAP 2 解压并运行COLMAP 3 稀疏三维重建 xff0c 生成稀疏图 4 稠密图三维重建 xff0c 生成稠密图 二 可能出现的问题 1 Dense stereo reconstr
  • FFmpeg教程(超级详细版)

    一 参考资料 通过ffmpeg把图片转换成视频 FFmpeg命令 一 使用filter complex命令拼接视频 FFmpeg 视频处理入门教程给新手的 20 多个 FFmpeg 命令示例 FFmpeg命令行转码 ffmpeg 翻译文档
  • yolov5+Deepsort实现目标跟踪

    一 参考资料 项目源码 pytorch yolo5 43 Deepsort实现目标检测和跟踪 工程落地 YoloV5 43 deepsort 43 Fast ReID 完整行人重识别系统 xff08 三 xff09 yolov5 deeps
  • 华为Ascend昇腾适配PyTorch框架

    一 参考资料 PyTorch用户文档 PyTorch网络模型移植 amp 训练指南 AscendPyTorch 第三方框架适配 二 重要说明 CPU架构为ARM架构时 xff0c 由于社区未提供ARM架构CPU版本的torch包 xff0c
  • 提高工作效率的宝藏网站和宝藏工具

    一 好用的网站 面包多 面包多 创作者在面包多 xff0c 通过出售课程 xff0c 文章 xff0c 绘画 xff0c 创意作品 xff0c 软件 xff0c 电子书 xff0c 音乐 xff0c 游戏 xff0c 咨询服务 xff0c
  • ubuntu服务器相关教程

    二 常用操作 1 ssh相关 span class token comment 安装ssh服务 span span class token function sudo span span class token function apt g
  • 超级实用的C++学习网站

    重要说明 xff1a 该博客长期更新 xff0c 方便读者查阅 xff01 一 参考资料 学习C 43 43 这几个网站足矣 二 C 43 43 学习网站 C 43 43 中文网 cppreference 当之无愧的C 43 43 学习第一
  • Vue 安装 Element Plus

    Element UI 是一款基于 Vue 的桌面端组件库 xff0c 提供了丰富的PC端组件 xff0c 简化了常用组件的封装 xff0c 大大降低了开发难度 随着 Vue 版本的更新 xff0c Element UI 2 x 升级到了El
  • gpio接口编程实例

    一 GPIO gpio general purpose ports 通用输入 输出端口 gpio的操作是所有硬件操作的基础 xff0c 这是底层开发人员必须掌握的 以三星公司的s3c2410 s3c2440为例做一下简要说明 s3c2410
  • ubuntu设置pycharm的桌面快捷方式

    写在最前面 xff1a 感谢大佬的分享 xff0c 参考了原文之后操作了一番 xff0c 除了pycharm xff0c 其他类似的软件也是一样的步骤即可创建桌面快捷方式 附上原文链接 xff1a Ubuntu 下安装pycharm 以及创
  • Anaconda在Ubuntu下的安装与简单使用

    一 Anaconda的安装 参考博客 ubuntu16 04下安装 amp 配置anaconda 43 tensorflow新手教程 1 下载 Miniconda 2 安装Miniconda bash Miniconda3 py39 4 1
  • 目标检测中NMS(非极大抑制)的概念理解

    参考博客 物体检测中常用的几个概念迁移学习 IOU NMS理解 目标定位和检测系列 xff08 3 xff09 xff1a 交并比 xff08 IOU xff09 和非极大值抑制 xff08 NMS xff09 的python实现 一 NM
  • VMware虚拟机上不能使用CUDA/CUDNN

    参考博客 VMware虚拟机上不能使用CUDA Linux Ubuntu 系统查看显卡型号 一 综述 虚拟机的显卡是虚拟的 xff0c 不能使用CUDA 虚拟机上装Nvidia显卡驱动会导致其他驱动全都不能用 xff0c 所以不能在虚拟机上
  • CUDA、CUDNN在windows下的安装及配置

    参考文章 全网最详细 Windows 安装 TensorFlow2 0 GPU 详细教程 Wind10安装anaonda 43 cuda10 1 43 cudnn 43 pytorch 43 tensorflow gpu win10 43
  • windows下CUDA的卸载以及安装

    参考博客 windows 7 下cuda 9 0 卸载 cuda8 0 安装 一 前言 对于一个刚玩CUDA菜鸟来说 xff0c 安装问题就是一个巨大的坑 xff0c 安装过程里面有很多需要注意的细节 xff0c 很多自定义的选项 xff0
  • 宇宙最强VisualStudio2017配置pyQt5用于python3.6的UI界面工具

    前言 请务必注意我的写作日期是2017年12月10日 现在的新版都在不停的变化中 xff0c 希望会越来愈好 2017年3月18日 xff0c 微软发布了Visual Studio2017 xff0c 其中的社区版可以自由下载并应用 xff
  • 【CVPR2019】超分辨率文章,SRFBN: Feedback Network for Image Super-Resoluition

    论文地址 代码 CVPR的单图像超分辨率文章 xff0c 主要是用回传机制来提高超分辨率的效果 xff0c 且不引入过多的参数 主要是设计了一个feedback模块 xff0c 多次回传 xff0c 如下图所示 xff1a 上一次feedb
  • selenium与browsermob-proxy

    BrowserMob Proxy允许您操作HTTP请求和响应 xff0c 捕获HTTP内容 xff0c 并将性能数据导出为HAR文件 BMP作为独立的代理服务器运行良好 xff0c 嵌入Selenium测试时尤其有用 下载地址如下 http

随机推荐

  • Ubuntu下Samba服务器搭建

    看网上Samba的搭建教程比较乱 xff0c 因此自己将Samba的搭建过程记录下来 xff0c 方便需要用到时还可以查看 1 安装 Samba xff1a apt get install samba 2 创建一个用于分享的 Samba 目
  • linux 第一章 shell编程及自动化运维实现

    linux shell编程及自动化运维实现 第一章 变量 一 shell 前言 1 shell语言的特点 SHELL语言是指Unix操作系统的命令语言 xff0c 同时又是该命令语言的解释程序的简称 shell本身是一个用c语言编写的程序
  • Error running 'ApplicationRun': 'xxx\jdk1.8.0_191\jre' is not a valid JRE home

    Error running ApplicationRun xxx jdk1 8 0 191 jre is not a valid JRE home解决办法 春节刚过 xff0c 疫情肆虐 从没见过如此冷清的成都 xff0c 阴沉的天空 xf
  • 总结一下:分页的几种办法

    总结一下 xff1a 分页的几种办法 以mysql为例 xff0c 做分页的方法 xff0c 目前我总结了3种 第一种分页 xff1a 采用Query类和PageUtils类做出分页 xff0c sql用limit获取条数 第一步 xff1
  • RabbitVCS:ubuntu下svn可视化工具的安装和使用

    转载链接 如果想在Linux环境下使用图形化界面的SVN客户端软件 xff0c 那么RabbitVCS绝对是首选 xff0c 可以媲美Windows环境下用的TortoiseSVN xff0c 甚至连操作都基本一样 xff0c 所以强烈推荐
  • docker - mysql - utf8 中文编码问题

    手把手教你如何在mysql 中使用中文编码 1 首先在docker中拉取好一个最新的mysql镜像以后 xff0c 创建一个容器 xff1a docker run span class hljs attribute d span span
  • 在 Ubuntu中安装图形用户界面

    参考链接 使用ubuntu server安装lamp主机非常的方便 xff0c 只要在安装系统的步骤中选择就是了 但是很多时候我需要在图形界面下管理主机更加方便 今天的教程就是教大家安装图形界面 方法一 首先你需要确定你的源文件中 etc
  • cmake在vscode和VS中的使用笔记

    在视频中看来的 launch json的 34 program 34 34 command cmake launchTargetPath 34 xff0c 这样就可以在vscode中按F5运行程序了CMakeLists中的aux sourc
  • centos yum 安装 php7.4 的mongodb扩展

    centos yum 安装 php7 4 的mongodb扩展 安装pecl php扩展包管理工具 yum install span class token operator span y openssl devel php pear ph
  • 利用ffmpeg实现添加图片水印和文字水印,添加多个水印。代码和命令实现及中文水印乱码

    ffmpeg中文水印乱码两种原因 1 字符编码格式原因 xff0c 中文必须是utf8编码格式的 xff08 我遇到的问题 xff0c 在vs2013上写的中文 xff0c 已做编码格式转码 xff0c 放到centos7 2上编译运行也会
  • rust error: failed to run custom build command for `openssl-sys v0.9.67`

    问题描述 在安装cargo install wasm pack时编译失败 xff0c 报错如下 error failed to run custom build command for 96 openssl sys v0 9 67 96 C
  • 获取文件行数

    获取文件行数 64 param string filename 文件名 64 return int function file line string filename int if file exists filename die 39
  • OneDrive的申请与使用

    最近在使用OneDrive的时候遇到了一些问题 xff0c 在这里记录下来 xff0c 方便以后查看 使用学校邮箱申请OneDrive 点击office365教育版申请地址 xff0c 输入你的学校邮箱 xff0c 按照指示操作即可 在On
  • Ubuntu22.04虚拟机配置及使用代理工具

    特别注意 xff1a 本教程基于VMware虚拟机 xff0c 安装Ubuntu22 04 其他类型虚拟机及Linux其他版本配置相似但有所不同 1 虚拟机配置 1 1 打开虚拟机设置 或 1 2 选择硬件选项卡 网络适配器 xff0c 在
  • pycharm 安装和使用常见问题

    一 pycharm的安装 pycharm的下载安装很简单 xff0c 可以去官网 xff08 https www jetbrains com pycharm xff09 但是安装之后运行往往会出现 no jdk found 的错误 可以在
  • python脚本纠错:interpolate.interp2d的正确用法

    说明 xff1a 接上一篇脚本中有个错误 xff0c 一直未解决 xff0c 其实是interpolate interp2d的输入参数错误 xff0c 输入参数应该一维数组 xff0c 而不是二位数组 参考https stackoverfl
  • 解决Ubuntu18.04网络不自动连接问题

    解决Ubuntu18 04网络不自动连接问题 有两种方法 xff1a 1 永久修改网络管理器 span class token function sudo span vim etc NetworkManager NetworkManager
  • ROS解决'[rosrun] Couldn't find executable named ...'

    使用实验室电脑制作的镜像安装了Ubuntu之后新建终端出现bash文件路径报错 xff0c 这里是因为实验室电脑的bashrc文件已经被修改 xff0c 需要换成自己的工作空间路径 xff0c 这也导致了后面找不到功能包 xff0c 无法生
  • RANSAC算法(原理及代码实现+迭代次数参数自适应)

    RANSAC算法 前言算法流程Python代码RANSAC算法迭代参数的自适应 前言 随机样本一致性 RANSAC 是一种迭代方法 xff0c 用于从一组包含异常值的观察数据中估计数学模型的参数 xff0c 此时异常值不会对估计值产生影响
  • 笔试刷题-头条

    题目描述 xff1a 编码题 字符串S由小写字母构成 xff0c 长度为n 定义一种操作 xff0c 每次都可以挑选字符串中任意的两个相邻字母进行交换 询问在至多交换m次之后 xff0c 字符串中最多有多少个连续的位置上的字母相同 xff1