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

字符串问题(哈希表解决)

码蹄集OJ-连续的串

给你一个字符串,找出现次数最多的长度为2的子串。

暴力解决:定义一个二维数组,横坐标代表长度为二的字符串的第一个字母,纵坐标指的是第二个字母。遍历所给字符串,每两个两个遍历,最后取得二维数组的最大值。最后从数组中将这个最大值所对应的字符串找出来。

#include<bits/stdc++.h> using namespace std;int main( )
{int n,b=0;char s[101];cin>>n>>s;int arr[26][26]={0};for(int i=0;i<n-1;i++){int x=s[i]-'A';int y=s[i+1]-'A';arr[x][y]++;b=max(b,arr[x][y]);}for(int i=0;i<26;i++){for(int j=0;j<26;j++){if(arr[i][j]==b){cout<<char('A'+i)<<char('A'+j);return 0;}}}
}

利用map数据结构解决:

    map<string, int> freq;

定义一个map集合,表示每一种字符串出现的次数。利用substr()函数从i开始向后取2个元素,再将这个字符串出现的次数加一。遍历哈希表找到出现次数的最大值,也就是值(p.second())的最大值,和这个键值所对应的字符串。

#include<bits/stdc++.h> using namespace std;int main( )
{int n;string s;cin >> n >> s;map<string, int> freq;for(int i=0;i<n-1;i++){string sub=s.substr(i,2);freq[sub]++;}int maxnum=0;string ss;for(const auto&p:freq){if(p.second>maxnum||p.second==maxnum&&(ss.empty()||p.first<ss)){maxnum=p.second;ss=p.first;}}cout<<ss<<endl;return 0;
}

http://www.dtcms.com/a/276908.html

相关文章:

  • linux:进程详解(2)
  • Java结构型模式---享元模式
  • 代码随想录|图论|14有向图的完全可达性
  • JavaScript加强篇——第八章 高效渲染与正则表达式
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | ToastNotification(推送通知)
  • C++进阶-多态2
  • 学习python调用WebApi的基本用法(2)
  • iw 命令 -- linux 无线管理
  • 利用 MySQL 进行数据清洗
  • C++类和对象(一)
  • Intel英特尔ICH7R/ICH8R/ICH9R/ICH10R系列下载地址--intel_msm_8961002 下载 Version 8.9.6.1002
  • 001_Claude开发者指南介绍
  • UNet改进(22):融合CNN与Transformer的医学图像分割新架构
  • MaxCompute过程中常见的数据倾斜场景以及对应的解决方案
  • std::sort的核心设计思想
  • C++:宏
  • python暑假课第三次作业
  • 从爆红到跑路:AI明星Manus为何仅用四个月就“抛弃”了中国?
  • 详解缓存淘汰策略:LFU
  • macOS - Chrome 关闭自动更新
  • 12.1 MMU配置与管理
  • 人工智能之数学基础:神经网络的矩阵参数求导
  • 基于CMMI的软件质量管理体系深度解析
  • 初级网安作业笔记1
  • 2025上海市“星光计划“信息安全管理与评估赛项二三阶段任务书
  • 【leetcode】字符串,链表的进位加法与乘法
  • 贝叶斯状态空间神经网络:融合概率推理和状态空间实现高精度预测和可解释性
  • 新手向:使用Python构建高效的日志处理系统
  • Linux系统之iprdbg 命令详解
  • 12.4 内存隔离与保护