力扣刷题第三天 最大字符串配对数目

题目描述:

给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。

如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以匹配:

  • 字符串 words[i] 等于 words[j] 的反转字符串。
  • 0 <= i < j < words.length

请你返回数组 words 中的 最大 匹配数目。

注意,每个字符串最多匹配一次。

解法一:枚举

二重循环,枚举给定的数组 words 中的 wordsi 和 wordsj是否可以匹配

cpp 复制代码
class Solution {
public:
    int maximumNumberOfStringPairs(vector<string>& words) {
        int n = words.size();
        int ans = 0;
        for (int i = 0; i < n; ++i) {
            for (int j = i + 1; j < n; ++j) {
                if (words[i][0] == words[j][1] && words[i][1] == words[j][0]) {
                    ++ans;
                }
            }
        }
        return ans;
    }
};
解法二:哈希集合

借助哈希集合,使用vector和set容器解决问题

cpp 复制代码
class Solution {
public:
    int maximumNumberOfStringPairs(vector<string>& words) {
        int n = words.size();
        int ans = 0;
        unordered_set<int> seen;
        for (int i = 0; i < n; ++i) {
            if (seen.count(words[i][1] * 100 + words[i][0])) {
                ++ans;
            }
            seen.insert(words[i][0] * 100 + words[i][1]);
        }
        return ans;
    }
};
解法三:哈希通用解法,字符串长度可以随意
cpp 复制代码
class Solution {
public:
   int maximumNumberOfStringPairs(vector<string>& words) {
       int ans = 0;
       unordered_set<string> occ;
       for (auto& word : words) {
           string tmp = word;
           reverse(tmp.begin(), tmp.end());
           if (occ.count(tmp)) {
               ans++;
           }
           occ.insert(word);
       }
       return ans;
   }
};
相关推荐
MegaDataFlowers17 小时前
104.二叉树的最大深度
算法
星轨初途17 小时前
【C++ 进阶】list 核心机制解析及 vector 巅峰对决
开发语言·数据结构·c++·经验分享·笔记·list
小侯不躺平.18 小时前
C++ Boost库【6】时间戳整体综合
开发语言·c++·算法
wuweijianlove18 小时前
算法稳定性分析中的输入扰动响应模型的技术6
算法
视觉算法小姥18 小时前
yolov11-obb在rk芯片部署的onnx模型输出的剪枝处理
算法·yolo·剪枝
KaMeidebaby18 小时前
卡梅德生物技术快报|糖蛋白纯化 Sevage 法工艺优化:正交与响应面法对比实操分析
人工智能·其他·算法·百度·新浪微博
前网易架构师-高司机18 小时前
ROS2 Jazzy+Gazebo Harmonic 环境下,用 URDF 搭建机器人,配置物理属性、插件与桥接,修复车轮和激光雷达故障 (手把手保姆级教程)
开发语言·算法·golang·机器人·ros
wjcroom18 小时前
时空和电子1-平直相对论时空的构建
算法·重构·物理学
吃好睡好便好18 小时前
矩阵的求幂运算
人工智能·学习·线性代数·算法·matlab·矩阵
计算机安禾18 小时前
【算法分析与设计】第18篇:改进的最大流算法:Edmonds-Karp与Dinic
大数据·人工智能·算法