力扣映射思辨题:赎金信

思路很简单:查到就改

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 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
师太,答应老衲吧3 小时前
SQL实战训练之,力扣:2020. 无流量的帐户数(递归)
数据库·sql·leetcode
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer3 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
wheeldown4 小时前
【数据结构】选择排序
数据结构·算法·排序算法
观音山保我别报错5 小时前
C语言扫雷小游戏
c语言·开发语言·算法
TangKenny6 小时前
计算网络信号
java·算法·华为
景鹤6 小时前
【算法】递归+深搜:814.二叉树剪枝
算法
iiFrankie6 小时前
SCNU习题 总结与复习
算法