当前位置: 首页 > news >正文

华为OD机考0017-0018:第K长的字串-逢7过

0017 第k长的字串

题目描述

给定一个字符串 只包含大写字母 求在包含同一字母的子串中 长度第K长的子串 相同字母只取最长的子串

输入

第一行 一个子串 1<len<=100 只包含大写字母 第二行为k的值

输出

连续出现次数第k多的字母的次数

样例:

    
例子:     

输入             AABAAA             2     

输出             1       

同一字母连续出现最多的A 3次       第二多2次  但A出现连续3次     

输入     AAAAHHHBBCDHHHH    3     

输出    2 

//如果子串中只包含同一字母的子串数小于k 则输出-1  

C++代码

//
// Created by HANWENKE on 2022/9/1.
//
#include <iostream>
#include <vector>
#include <unordered_map>
#include <algorithm>
using namespace std;
//接下来对ismap排序
bool cmp(const pair<char,int>&a,const pair<char,int>&b){
    return a.second>b.second;
}
int main(){
    string s;
    getline(cin,s);
    //首先要记录每个字符在字符串中出现的次数
    //如果是不连续出现了多次--那么就要记长度更改为出现次数最多的

    int k;
    cin>>k;
    unordered_map<char,int>ismap;
    char cur=s[0];
    int count=1;
    ismap[cur]=count;//记录第一个元素的个数
    for(int i=1;i<s.length();i++){
        char c=s[i];
        //如果与第一个字符相等的化个数加1
        if(c==cur) count++;
        else{
            cur=c;
            count=1;
        }
        //判断这个字符是否在map中出现过
        if(ismap.count(cur)){
            //比较它现在的长度是否是大于之前的长度的
            if(ismap[cur]<count){
                //如果现在的长度是大于之前的长度,那么就将此字符的长度置为现在的值
                ismap[cur]=count;
            }
        }else{
            ismap[cur]=count;
        }
    }
    vector<pair<char,int>>temp;
    for(auto &x:ismap){
        temp.push_back(x);
    }
    sort(temp.begin(),temp.end(),cmp);
    //如果不同字符的个数小于k--输出-1
    if(temp.size()<k) {
        cout<<-1;
    }
    //下标是从0开始,所以是K-1
    cout<<temp[k-1].second;
    return 0;
}

0018逢7过

题目描述:

喊7 是一个传统的聚会游戏N个人围成一圈,按顺时针从1-7编号, 编号为1的人从1开始喊数,下一个人喊得数字是上一个人喊得数字+1,但是当将要喊出数字7的倍数或者含有7的话,不能喊出 而是要喊过
假定N个人都没有失误。
当喊道数字k时,可以统计每个人喊 “过"的次数

现给定一个长度n的数组,存储打乱的每个人喊”过"的次数,请把它还原成正确顺序

即数组的第i个元素存储编号i的人喊“过“的次数

输入

输入为1行
空格分割的喊过的次数
注意k并不提供

​ k不超过200
​ 数字个数为n

输出描述

输出为1行
顺序正确的喊过的次数 空格分割

样例:


例子
输入
0 1 0
输出
1 0 0

只有一次过
发生在7
按顺序编号1的人遇到7  所以100
结束时的k不一定是7 也可以是 8 9
喊过都是100

例子
输入
0 0 0 2 1
输出
0 2 0 1 0
一共三次喊过
发生在7 14 17
编号为2 的遇到7 17
编号为4 的遇到14

代码

//
// Created by HANWENKE on 2022/9/1.
//
#include <iostream>
#include <vector>
#include <string>
using  namespace std;
int main(){
    vector<int>arr;
    int temp;
    while(cin>>temp){
        arr.push_back(temp);
        if(getchar()=='\n')break;
    }
    //统计出现7的次数
    int sum=0;
    for(int i=0;i<arr.size();i++){
        sum+=arr[i];
    }
    vector<int>arr1(arr.size(),0);
    int j=0;
    for(int i=1;i<300;i++,j++){
        //统计在300以为编号为i的人身上会出现几次为7个数
        if(j==arr.size())j=0;
        //判断i中是否含有7
        bool flag=false;
        string ss=to_string(i);
        for(int k=0;k<ss.length();k++){
            if(ss[k]=='7'){
                flag= true;
                break;
            }
        }
        //如果是7的倍数或者数字中含有7-那么就对第i个人加1
        if(i%7==0||flag){
            arr1[j]+=1;
        }
        //

        //记录我当前数组中逢7过的次数
        int sum1=0;
        for(auto &x:arr1){
            sum1+=x;
        }
        //如果逢7过的次数与给的次数相同,那么就结束循环
        if(sum==sum1) break;
    }
    for(auto &x:arr1){
        cout<<x<<" ";
    }
    return 0;
}

相关文章:

  • Typora基本使用
  • 2021-03-26 Linux基础
  • Efficient Elements for presentations – Add-in for PowerPoint
  • R语言ggplot2可视化:ggplot2可视化水平半小提琴图(Horizontal Half Violin Plots)
  • 如何在terminal中使用Joplin并像vim一样移动?
  • 下一个排列问题next_permutation
  • SSM传染病监测防控管理系统毕业设计-附源码061525
  • 开题报告:基于java房产中介预约看房网站系统 毕业设计论文开题报告模板
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • 【小程序】中的事件处理详解
  • SSM大学生心理健康服务平台毕业设计-附源码071131
  • springboot绿色食品商城毕业设计-附源码061109
  • 猿创征文|技术成长之路-【Java编程系列】之文件OSS存储实践:Amazon S3实现文件上传下载
  • Docker10:DockerFile的介绍与指令说明
  • Java求数组所有子数组的两种方法
  • [Vue CLI 3] 配置解析之 css.extract
  • “大数据应用场景”之隔壁老王(连载四)
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【css3】浏览器内核及其兼容性
  • 【个人向】《HTTP图解》阅后小结
  • 【跃迁之路】【733天】程序员高效学习方法论探索系列(实验阶段490-2019.2.23)...
  • 77. Combinations
  • Angular 响应式表单 基础例子
  • CentOS7 安装JDK
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java精华积累:初学者都应该搞懂的问题
  • mysql 5.6 原生Online DDL解析
  • Objective-C 中关联引用的概念
  • php ci框架整合银盛支付
  • 闭包--闭包作用之保存(一)
  • 高度不固定时垂直居中
  • 关于Java中分层中遇到的一些问题
  • 今年的LC3大会没了?
  • 排序算法学习笔记
  • 数据结构java版之冒泡排序及优化
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 容器镜像
  • # Apache SeaTunnel 究竟是什么?
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • ./configure,make,make install的作用(转)
  • .aanva
  • .gitattributes 文件
  • .gitignore文件设置了忽略但不生效
  • .Net Web窗口页属性
  • .net操作Excel出错解决
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • @Transactional 详解
  • [100天算法】-每个元音包含偶数次的最长子字符串(day 53)
  • [2018-01-08] Python强化周的第一天
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)