力扣映射思辨题:赎金信

思路很简单:查到就改

bool canConstruct(char* ransomNote, char* magazine) {
   
    for(long x=0;x<strlen(ransomNote);x++)
    {
        for(long y=0;y<strlen(magazine);y++)
        {
            if(magazine[y]==ransomNote[x])
            {
            ransomNote[x]='1';
            magazine[y]='1';
                break;
            }
        }
    }
    for(long x=0;x<strlen(ransomNote);x++)
    {
        if(ransomNote[x]!='1')
        {
            return false;
        }
    }
    return true;
}

这是笔者的代码,因为magazine数据过大毙了,整体思路为如果相同则将目标字符串对应位置标为1,再将样本字符串对应位置标为1并break,防止其再次进行判断

所以这是通过大佬的代码

bool canConstruct(char * ransomNote, char * magazine){
    int l_r = strlen(ransomNote);
    int l_m = strlen(magazine);
    if(l_r > l_m) return false;
    int count = 0;
    for(int i = 0; i < l_r; i++){
        for(int j = 0; j < l_m; j++){
            if(ransomNote[i] == magazine[j]){
                count++;
                magazine[j] = ' ';//如果在杂志上找到了对应的字母,则将杂志上的字母改掉
                break;
            }
        }
    }
    if(count == l_r) return true;
    else return false;
}

同样是遍历,大佬只是计算匹配次数并与目标字符串长度进行比较,对样本字符串的处理和我相同,但是减少了一次遍历,大大缩短了时间

相关推荐
带多刺的玫瑰1 小时前
Leecode刷题C语言之统计不是特殊数字的数字数量
java·c语言·算法
爱敲代码的憨仔1 小时前
《线性代数的本质》
线性代数·算法·决策树
陪学1 小时前
百度遭初创企业指控抄袭,维权还是碰瓷?
人工智能·百度·面试·职场和发展·产品运营
yigan_Eins1 小时前
【数论】莫比乌斯函数及其反演
c++·经验分享·算法
阿史大杯茶1 小时前
AtCoder Beginner Contest 381(ABCDEF 题)视频讲解
数据结构·c++·算法
დ旧言~2 小时前
【高阶数据结构】图论
算法·深度优先·广度优先·宽度优先·推荐算法
张彦峰ZYF2 小时前
投资策略规划最优决策分析
分布式·算法·金融
The_Ticker2 小时前
CFD平台如何接入实时行情源
java·大数据·数据库·人工智能·算法·区块链·软件工程
Lenyiin3 小时前
02.06、回文链表
数据结构·leetcode·链表
爪哇学长3 小时前
双指针算法详解:原理、应用场景及代码示例
java·数据结构·算法