首页 > 编程语言 >一道简单的算法题

一道简单的算法题

时间:2023-07-26 11:47:30浏览次数:32  
标签:return Dictionary str2 str1 dic2 dic 一道 算法 简单

/// <summary>
/// 字符串str1与str2,若str1中的各个字符经过重排后能形成str2,则返回true。
/// str1 = "sawsdfdfalsraodf";
/// str2 = "world";
/// rearrange(str1,str2) -> true;
/// 
/// 提示:检查str1中的各个字符的字符数是否大于str2各个字符的字符数即可
/// </summary>
private static bool rearrange(string str1, string str2)
{
    if (str1 == null || str2 == null || str1.Length < str2.Length) return false;

    char[] chars = str1.ToCharArray();
    char[] chars2 = str2.ToCharArray();

    Dictionary<char, int> dic = new Dictionary<char, int>();
    foreach (var c in chars)
    {
        if (dic.ContainsKey(c))
        {
            dic[c] = dic[c] + 1;
        }
        else
        {
            dic[c] = 1;
        }
    }
    Dictionary<char, int> dic2 = new Dictionary<char, int>();
    foreach (var c in chars2)
    {
        if (dic2.ContainsKey(c))
        {
            dic2[c] = dic2[c] + 1;
        }
        else
        {
            dic2[c] = 1;
        }
    }

    foreach (var c in dic2.Keys)
    {
        if (!dic.ContainsKey(c)) return false;

        if (dic[c] < dic2[c]) return false;
    }
    return true;
}

标签:return,Dictionary,str2,str1,dic2,dic,一道,算法,简单
From: https://www.cnblogs.com/xuxuzhaozhao/p/17582014.html

相关文章

  • 传统IO过程以及零拷贝简单介绍
    传统IO过程整个IO过程涉及到三个部分,分别是用户缓冲区,内核缓冲区(PageCache)以及硬件。用户态CPU发起IO请求,即发起read()系统调用,随后进程阻塞,用户态切换到内核态。内核态DMA发起IO请求与硬件进行DMA拷贝到内核缓冲区中,之后内核缓冲区与用户缓冲区进行CPU拷贝,至此read()函数调用......
  • Mahout协同推荐简单实例
    Mahout给我们提供的强大的协同过滤算法。需要新建一个基于Maven的工程,下面是pom.xml需要导入的包。<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0ht......
  • Vue中的虚拟DOM和Diff算法
    一、虚拟DOM1.什么是虚拟DOM?一个用来表示真实DOM节点的JS对象,主要包含标签名tag、属性attrs和子元素对象children属性等。代码示例如下:<divclass="contain"id="baseNo"><h4class="item">标题</h4><pclass="item">段落内容</p>&......
  • 粒子滤波(pf)、Mean Shift、KLT算法
    粒子滤波(pf)、MeanShift算法、KLT算法都是传统的目标跟踪算法。    粒子滤波算法(ParticleFilter),也称为蒙特卡洛滤波算法,是一种基于蒙特卡洛方法的非线性滤波算法,用于在非线性系统中进行状态估计和目标跟踪。粒子滤波算法的基本思想是通过一组随机采样的粒子来近似......
  • 1.c++入门以及简单顺序结构
    1.c++入门以及简单顺序结构编程就是教计算机解决问题,编程语言就是和计算机沟通时用到的语言——严欣怡一、编写一个简单的C++程序#include<iostream>usingnamespacestd;intmain(){ cout<<"你好C++,我是严欣怡."; return0;}二、语法基础变量1.变量的概念变......
  • 1.c++入门以及简单顺序结构题目
    #1.c++入门以及简单顺序结构题目##1.计算(a+b)*c的值```c++inta,b,c;cin>>a>>b>>c;cout<<(a+b)*c;return0;```##2.带余除法```c++inta,b;cin>>a>>b;cout<<a/b<<""<<a%b;``````c++//c++中取余结果只与%前面的正负有关系cout<<......
  • 1.C++入门以及简单顺序结构
    1.C++入门以及简单顺序结构编程就教计算机解决问题,编程语言就是和计算机沟通时用到的语言——金思宸一、编写一个简单的c++程序#include<iostream>usingnamespacestd;intmain(){ cout<<"你好c++"; return0;}2、语法基础变量1.变量的概念变量本子是一个装东......
  • 简单的bootloader
    下面是一个简单的启动代码示例,用于展示一个最基本的引导加载程序(bootloader)的结构和功能:.global_start.section.text_start:#设置堆栈指针movsp,#0x10000#加载内核镜像到内存中的地址ldrr0,=0x8000ldrr1,=kernel_imageldrr2,=kernel_sizeldmiar1!,{r3}str......
  • 数据绑定的简单实现
    点击查看代码<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title&......
  • 【jenkins】多分支流水线的简单应用
    Jenkins多分支流水线(Multi-BranchPipeline)是一种用于持续集成和交付的自动化构建和部署流水线。它可以根据代码库中的不同分支或标签,自动创建和执行适用于各个分支的独立流水线。以下是配置和使用Jenkins多分支流水线的一般步骤:安装必要的插件:在Jenkins中安装Pipeline插件、......