• 题意:有两个字符串,两个字符串中的相同字符可以相互匹配,\(?\)可以和任意字符匹配,输出最大匹配的字符数量和它们分别两个字符串中的位置.

  • 题解:很容易贪心,我们先遍历第一个字符串,然后在第二个字符串中去找与当前位置相同的字符,这个过程我们可以先将每个字符的位置存下来然后再操作,遍历完后再遍历字符和问号,最后是问号和问号匹配,具体看代码吧,主要是想学习一下用队列来模拟操作(会方便很多).

  • 代码:

    int n;
    string l,r;
    queue<int> h1[30],h2[30];
    vector<PII> ans; int main() {
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    cin>>n;
    cin>>l>>r; rep(i,0,n-1){
    if(l[i]=='?') h1[0].push(i+1);
    else h1[l[i]-96].push(i+1);
    if(r[i]=='?') h2[0].push(i+1);
    else h2[r[i]-96].push(i+1);
    } rep(i,1,26){
    int mi=min(h1[i].size(),h2[i].size());
    rep(j,1,mi){
    ans.pb({h1[i].front(),h2[i].front()});
    h1[i].pop();
    h2[i].pop();
    }
    } rep(i,1,26){
    int mi=min(h1[0].size(),h2[i].size());
    rep(j,1,mi){
    ans.pb({h1[0].front(),h2[i].front()});
    h1[0].pop();
    h2[i].pop();
    }
    } rep(i,1,26){
    int mi=min(h1[i].size(),h2[0].size());
    rep(j,1,mi){
    ans.pb({h1[i].front(),h2[0].front()});
    h1[i].pop();
    h2[0].pop();
    }
    } int mi=min(h1[0].size(),h2[0].size());
    rep(i,1,mi){
    ans.pb({h1[0].front(),h2[0].front()});
    h1[0].pop();
    h2[0].pop();
    } cout<<(int)ans.size()<<'\n'; rep(i,0,(int)ans.size()-1) cout<<ans[i].fi<<' '<<ans[i].se<<'\n'; return 0;
    }

最新文章

  1. js基础
  2. PHP $_SERVER详解
  3. JAVA数据压缩简单测试
  4. SQL Server里的闩锁介绍
  5. C#获取CPUID(MD5输出),网卡ID,主DNS,备用DNS
  6. C#中的两种debug方法
  7. React学习笔记(三) 组件传值
  8. webform开发经验(一):Asp.Net获取Checkbox选中的值
  9. fcntl,F_GETFL,F_SETFL,flags
  10. 一次使用Eclipse Memory Analyzer分析Tomcat内存溢出(转)
  11. wordpress建站过程5——footer.php
  12. SQL Server 存储过程进行分页查询
  13. 学习Android路上的一些感慨和总结,慢慢来,比较快!
  14. Spring Boot @EnableWebMvc 与 mvc 配置
  15. 引擎设计跟踪(九.14.3.1) deferred shading: Depthstencil as GBuffer depth
  16. fiddler学习总结--autoresponder替换资源
  17. Json 转 dynamic
  18. HTML中select的option设置selected=&quot;selected&quot;无效的解决方案
  19. Oracle 批量修改某个用户下表的表空间
  20. ffmpeg查看音频文件信息

热门文章

  1. 通过JS逆向ProtoBuf 反反爬思路分享
  2. 【Linux】saltstack的使用详解 超详细
  3. 核酸检测:让我明白AQS原理
  4. 获取网页url中的参数
  5. uni-app开发经验分享十七: 开发微信公众号(H5)JSSDK 的使用方式
  6. Python数据模型与Python对象模型
  7. notepad文件对比
  8. java面向对象(二)构造函数和构造代码块
  9. 房产基于Swoole的PHP RPC框架设计
  10. 服务降级 托底预案 Nginx中使用Lua脚本检测CPU使用率,当达到阀值时开启限流,让用户排队