首页 > 编程语言 >小美的字符串匹配度(美团2024届秋招笔试第一场编程真题)

小美的字符串匹配度(美团2024届秋招笔试第一场编程真题)

时间:2024-04-02 14:47:13浏览次数:28  
标签:charAt idx 真题 int res 美团 届秋招 mp id

题面

核心思想

对于本来就匹配的肯定不能动

用HashMap<Character, List> mp = new HashMap<>()

存放当s[i]!=t[i]时 字符t[i]的下标i,表示t[i]的这个字符出现在t的位置

通过list 去遍历s[i] 在 t 中的位置,交换后对结果的贡献 +1 或 +2

代码

import java.util.*;

public class Main {
    public static void main(String[] args) {
        final long MOD = (long) (1e9 + 7);
        Scanner scanner = new Scanner(System.in);
        int n = Integer.parseInt(scanner.nextLine());
        String s = scanner.nextLine();
        String t = scanner.nextLine();
        // 存放不匹配字符t的下标
        HashMap<Character, List<Integer>> mp = new HashMap<>();
        int res = 0;
        for(int i = 0; i < n; i++){
            if(s.charAt(i) == t.charAt(i))
                res++;
            else{
                //存放下标
                List<Integer> idx = mp.getOrDefault(t.charAt(i), new ArrayList<>());
                idx.add(i);
                mp.put(t.charAt(i), idx);
            }
        }
        //暂存res
        int resTmp = res;
        for(int i = 0; i < n; i++){
            // 不匹配 且 t中存在字符s[i]
            if(s.charAt(i) != t.charAt(i) && mp.containsKey(s.charAt(i))){
                List<Integer> idx = mp.get(s.charAt(i));
                for(int j = 0; j < idx.size(); j++){
                    // s  i   id
                    // t  i   id  s[i]一定是等于t[id]的 看i交换过去后能不能多一个匹配的
                    int cnt = 1;
                    int id = idx.get(j);
                    if(s.charAt(id) == t.charAt(i))
                        cnt++;
                    res = Math.max(res, resTmp + cnt);
                }
            }
        }
        System.out.println(res);
    }
}

标签:charAt,idx,真题,int,res,美团,届秋招,mp,id
From: https://www.cnblogs.com/ganyq/p/18110535

相关文章

  • 小美的外卖订单(美团2024届秋招笔试第一场编程真题)
    题面核心思想折扣价不能大于原价原价才能参与满家原价、折扣价和满减的价格都必须是正实数格式化输出代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)(1e9+7);Scanner......
  • 判断ip地址是否合法(美团2024届秋招笔试第三场编程真题)
    核心思想大模拟-。-,还是不够细心,面向样例编程,一路错过去的。写得太丑了凑合看吧。代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)(1e9+7);Scannerscanner=newScanner(Syste......
  • 小美的游戏(美团2024届秋招笔试第三场编程真题)
    核心思想贪心,每次选最大的两个~代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)(1e9+7);Scannerscanner=newScanner(System.in);intn=scanner.nextInt();......
  • 小美种果树(美团2024届秋招笔试第三场编程真题)
    核心思想第一天施肥浇水第二天浇水第三天浇水定义以上操作为一轮先计算能够操作多少轮,那么剩下的只能在一轮中完成,剩下的成长值模拟下就好。代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){finallongMOD=(long)......
  • 小红结账(美团2024届秋招笔试第三场编程真题)
    核心思想模拟就完了代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=scanner.nextInt();intm=scanner.nextInt();Long[]res=newL......
  • 蓝桥杯真题代码记录(松散子序列
    目录1.题目:2.我的代码:小结:1.题目:给定一个仅含小写字母的字符串s,假设s的一个子序列t的第i个字符对应了原字符串中的第pi个字符。我们定义s的一个松散子序列为:对于i>1总是有pi−pi−1≥2。设一个子序列的价值为其包含的每个字符的价值之和......
  • 【华为OD机试真题】A卷-优秀学员统计(JAVA)
    一、题目描述【华为OD机试真题】A卷-优秀学员统计(JAVA)题目描述:公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个id,每天的打卡记录记录当天打卡员工的id集合,一共30天。请你实现......
  • 【华为OD机试真题】A卷-预定酒店(JAVA)
    一、题目描述【华为OD机试真题】A卷-预定酒店(JAVA)题目描述:放暑假了,小明决定到某旅游景点游玩,他在网上搜索到了各种价位的酒店(长度为n的数组A),他的心理价位是x元,请帮他筛选出k个最接近x元的酒店(n>=k>0),并由低到高打印酒店的价格二、输入输出输入描述:第一行:n,k,x......
  • 小球投盒(美团2024届秋招笔试第三场编程真题)
    核心思想用一个队列存储还没有球的盒子一旦有2操作那就剩下1个盒子没有球代码importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){TreeSet<Integer>q=newTreeSet<>();Scannerscanner=newScanner(System.in)......
  • CCF CSP模拟真题解答示例
    CCFCSP(CertifiedSoftwareProfessional)是中国计算机学会主办的软件能力认证考试,旨在评估参赛者在计算机科学和软件工程方面的基本知识和实践能力。请注意,以下解答仅作为示例,并非针对实际真题的准确答案。实际考试中的题目和答案可能会有所不同,因此建议参考官方发布的真题......