IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> leetcode 连接后等于目标字符串的字符串对(C++、java、python) -> 正文阅读

[数据结构与算法]leetcode 连接后等于目标字符串的字符串对(C++、java、python)

给你一个?数字?字符串数组?nums?和一个?数字?字符串?target?,请你返回?nums[i] + nums[j]?(两个字符串连接)结果等于?target?的下标?(i, j)?(需满足?i != j)的数目。

示例 1:

输入:nums = ["777","7","77","77"], target = "7777"
输出:4
解释:符合要求的下标对包括:
- (0, 1):"777" + "7"
- (1, 0):"7" + "777"
- (2, 3):"77" + "77"
- (3, 2):"77" + "77"

示例 2:

输入:nums = ["123","4","12","34"], target = "1234"
输出:2
解释:符合要求的下标对包括
- (0, 1):"123" + "4"
- (2, 3):"12" + "34"

示例 3:

输入:nums = ["1","1","1"], target = "11"
输出:6
解释:符合要求的下标对包括
- (0, 1):"1" + "1"
- (1, 0):"1" + "1"
- (0, 2):"1" + "1"
- (2, 0):"1" + "1"
- (1, 2):"1" + "1"
- (2, 1):"1" + "1"

提示:

  • 2 <= nums.length <= 100
  • 1 <= nums[i].length <= 100
  • 2 <= target.length <= 100
  • nums[i]?和?target?只包含数字。
  • nums[i]?和?target?不含有任何前导 0 。

C++

class Solution {
public:
    int numOfPairs(vector<string>& nums, string target) {
        unordered_map<string,int> mp;
        for(auto num:nums) {
            mp[num]++;
        }
        int n=target.size();
        int res=0;
        for(int i=0;i<n-1;i++) {
            string a=target.substr(0,i+1);
            string b=target.substr(i+1);
            if(mp.find(a)!=mp.end() && mp.find(b)!=mp.end()) {
                if(a==b) {
                    res+=mp[a]*(mp[b]-1);
                } else {
                    res+=mp[a]*mp[b];
                }
            }
        }
        return res;
    }
};

java

class Solution {
    public int numOfPairs(String[] nums, String target) {
        Map<String, Integer> mp = new HashMap<>();
        for (String num : nums) {
            mp.put(num, mp.getOrDefault(num, 0) + 1);
        }
        int n = target.length();
        int res = 0;
        for (int i = 0; i < n-1; i++) {
            String a = target.substring(0, i + 1);
            String b = target.substring(i + 1, n);
            if (mp.containsKey(a) && mp.containsKey(b)) {
                if(a.equals(b)) {
                    res+=mp.get(a)*(mp.get(b)-1);
                } else {
                    res+=mp.get(a)*mp.get(b);
                }
            }
        }
        return res;
    }
}

python

class Solution:
    def numOfPairs(self, nums: List[str], target: str) -> int:
        res = 0
        ct = Counter()
        n = len(target)
        for num in nums:
            ct[num] += 1
        for i in range(n):
            a = target[0:i + 1]
            b = target[i + 1:]
            if a in ct and b in ct:
                if a == b:
                    res += ct[a] * (ct[b] - 1)
                else:
                    res += ct[a] * ct[b]
        return res

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-10-03 17:18:25  更:2021-10-03 17:18:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 13:51:35-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码