首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

java实现 所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。 编写一个函数来

所有 DNA 都由一系列缩写为 A,C,G 和 T 的核苷酸组成,例如:“ACGAATTCCG”。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。...编写一个函数来查找目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。...AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT" 输出:["AAAAACCCCC", "CCCCCAAAAA"] 解法相当简单: 1 开两个set集合 然后存储字符串 2 字符串每一个都截...10是个长度 3 判断存储的里面是否已经含有 ,已经含有 放到输出的集合里面(判断好条件 s.length()-Max+1 ) 4 注意: set可以自动转换为List ,因为set不含重复的...,list里面含有重复的 ,所以可以new ArrayList( set); class Solution { public List findRepeatedDnaSequences

72320

编程语言:类型系统的本质

例如,将一个值标记为 const,或者将一个成员变量标记为 private,类型检查将强制限制实施其他许多安全属性。 从 01 到现实世界对象模型 类型为数据赋予了意义。...泛型类型,如T[],需要一个实际的类型参数来生成一个具体类型。其类型构造函数为(T) -> [T[] type]。...类型A = {a1, a2}(类型A的可能值为a1和a2)和B = {b1, b2}(类型B的可能值为b1和b2)组合成为元素类型时,结果为A×B = {(a1, b1), (a1, b2)...任何事物都是对象,大量的对象结合起来就形成了集合,对象和对象之间存在一个或多个联系,任何一个联系就叫做态射。 一堆对象,以及对象之间的所有态射所构成的一种代数结构,便称之为 范畴。 什么是函子?...那么 1 就是单位元(乘法单位元) Ok,我们已经了解了所有应该掌握的专业术语,那就简单串解一下这段解释吧: 一个 自函子 范畴 上的 幺半群 ,可以理解为: 在一个满足结合律和单位元规则的集合中,存在一个映射关系

2.6K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入理解JavaScript函数式编程

    所有的外部交互都有可能代来副作用,副作用也使得方法通用性下降不适合扩展和可重用性;同时副作用会给程序中带来安全隐患给程序带来不确定性,但是副作用不可能完全禁止,尽可能控制它们在可控范围内发生....reduce是将所有数组进行遍历比如累加第一个的结果会传入到第二个中 函数组合要满足「结合律」 既可以把g和h组合,还可吧f和g组合,结果都是一样的 let f = compose(f,g,h); let...(fp.toLower),fp.split(' ')); 案例演示,其实PointFree模式就是函数的组合,「函数组合不需要处理数据的,返回的新函数来处理数据」 //Hello world => hello_world...,而是由函子完成 函子就是一个实现了map的契约对象 可以把函子想象成一个盒子,这个盒子里面封装了一个值 想要处理盒子中的值,需要盒子的map方法传递一个处理值的函数(纯函数),由这个函数来对值进行处理...y 通过函数组合可以把多个一元函数组合成一个功能更强大的函数 函数组合需要满足结合律,函数组合默认的执行顺序是从右到左 函子是一个特殊的容器(对象),这个容器内部封装一个值,通过 map 传递一个函数对值进行处理

    4.3K30

    泛函编程(15)-泛函状态-随意数产生器

    对于OOP程序员来说,泛函状态变迁(functional state transition)是一个陌生的课题。泛函状态变迁是通过泛函状态数据类型(functional state)来实现的。...State是一个出现在泛函编程里的类型(type)。...与其它数据类型一样,State同样需要自身的一套泛函操作函数和组合函数(combinators),我们将在以下章节中讨论有关State数据类型的设计方案。      ...如果我们使用同一个RNG产生的结果是一样的r2==r3,恰恰体现了泛函风格。...我是说现在感觉编程已经变成了好像高中做数学题一样:拿到一个函数描述就开始想办法用什么其它现有的函数来解决;然后匹配一下类型,找找以前的例子,等等。。。,完全没有感觉到是在编写计算机程序。

    891100

    函子到底是什么?ApplicativeMonad

    而Monoid是元素对象的组合的范畴,如果这种元素对象是函数或函子(也可能是Pipe,这就复杂了去了 ),那么Monad是自函子的组合范畴,Monad也是一种特殊的Monoid子集。...换句话说,如果一个范畴内部的所有元素可以映射为另一个范畴的元素,且元素间的关系也可以映射为另一个范畴元素间关系,则认为这两个范畴之间存在映射。所谓函子就是表示两个范畴的映射。...我们在这个大范畴所做的所有映射操作都是同一范畴内的映射,自然这样的范畴就是一个自函子的范畴。...假设两个范畴是 C和D, 其函函子是: functor F: C -> D 函子functor原理   函数组合的方式有其特殊地方,这个特殊主要是由于我们组合的对象是函数,如果组合的对象是整数类型,两个整数组合成一个整数...将 F函数单独应用于C中每个函数的结果,我们就获得结果的集合的集合。 压平这两层集合,组合所有的结果。 (注意这里的组合方式将对应Monad的自然变换态射)。

    4.5K30

    用 Kotlin 的函数式编程 替代 GOF 设计模式用 Kotlin 的函数式编程 替代 GOF 设计模式函数式编程(FP)《Kotlin极简教程》正式上架:

    所有函数都消费函数,所有函数都生产函数。 "函数式编程", 又称泛函编程, 是一种"编程范式"(programming paradigm),也就是如何编写程序的方法论。...Gödel 首先证明了一个形式系统中的所有公式都可以表示为自然数,并可以从一自然数反过来得出相应的公式。...1935-1936这个时间段上,我们有了三个有效计算模型:通用图灵机、通用递归函数、λ可定义。Rosser 1939 年正式确认这三个模型是等效的。...他的项目需要用某种形式语言来编写语句,以记录关于世界的信息,而他感觉列表结构这种形式挺合适,既方便编写,也方便推演。于是就创造了LISP。...我们在编程中,不可能使用纯的对象(对象的行为方法其实就是函数),或者纯的函数(调用函数的对象、函数操作的数据其实就是数据结构)来创造一个完整的世界。

    1.2K50

    JavaScript函数式编程之函子

    map方法传递一个处理值的函数(纯函数),由这个函数来对值进行处理 最终map方法返回一个包含新值所在的盒子(函子) 根据函子的定义我们创建一个函子 // functor 函子 class Container...和传入的fn 函数组合成一个新的函数 return new IO(fp.flowRight(fn, this...._value()) IO 函子内部帮我们包装了一些函数,当我们传递函数的时候有可能这个函数是一个不纯的操作,不管这个函数纯与不纯,IO这个函子在执行的过程中它返回的这个结果始终是一个纯的操作,我们调用map...的时候始终返回的是一个函子,但是IO函子这个_value属性他里面要去合并很多函数,所以他里面可能是不纯的,把这些不纯的操作延迟到了调用的时候,也就是我们通过IO函子控制了副作用的在可控的范围内发生...和传入的fn 函数组合成一个新的函数 return new IO(fp.flowRight(fn, this.

    1.2K30

    泛函编程(28)-粗俗浅解:Functor, Applicative, Monad

    经过了一段时间的泛函编程讨论,始终没能实实在在的明确到底泛函编程有什么区别和特点;我是指在现实编程的情况下所谓的泛函编程到底如何特别。...我们就以一步步更改程序状态的方式,一行一行的拼凑指令:这就是典型的行令式编程了。 泛函编程,顾名思义,就是用一个个函数来编程。讲的再深入点就是通过函数组合来更改程序状态。什么意思?为什么?...严格来讲,在泛函编程中是没有在某个地方申明一个变量,然后在一些函数里更新这个变量这种方式的。与申明变量相对应的是泛函编程会把所谓变量嵌入在一个结构里,如:F[A]。F是某种高阶类型,A就是那个变量。...如果我们需要去更改这个变量A就必须设计一套专门的函数来做这件事了。从某些方面这也解释了何谓泛函编程。我用粗俗的语言来描述这两种编程模式的区别:行令编程就像在床面上打扑克,而泛函编程就好比在被窝里打牌。...我们先定义一个测试用的数据类型: case class Box[A](a: A)  >>> 这是一个带嵌入变量的泛函类型 下面我们就试着实现这三款函数: 1、 A => B 1 case class

    1.1K60

    函数式编程了解一下(下)

    其实还是我们之前说的,函数的原则就是小、单一、简单。因为易测、简单。而我们呢,通过组合使用这些简单的函数而实现一个不简单的函数,完成一个不简单的功能。是不是类似于React编写组件的概念。...通过组合各种小组件完成页面编写的感觉?...其实这种编写的技巧就是将多个小而巧的函数组合完成不一样的功效出来。...如上,我们就编写除了一个函子,是不是也就那么回事?...img 说说问题 是的,我们解决了我们的需求,但是仔细看上面代码,貌似丢失我们使用函子的初衷:代码简洁,看着爽~ 而上面的map多到怀疑人生,自己写起来可能会很好,但是别人维护起来是一个非常头疼的事情

    1K20

    在不同的任务中,我应该选择哪种机器学习算法?

    通过对标签训练集的拟合,我们希望找到最优的模型参数来预测其他对象(测试集)的未知标签。如果标签是一个实数,我们就把任务叫做“回归(regression)”。...我们可以观察对象组之间的一些相似性,并将它们包含在适当的集群中。有些对象可能与所有集群都有很大的不同,因此我们假定这些对象是异常的。 ?...决策树的图形可以帮助你了解你在想什么,它们的引擎需要一个系统的、有记录的思维过程。 这个算法的想法很简单。在每个节点中,我们选择了所有特征和所有可能的分割点之间的最佳分割。...每一个分割都被选择,以最大化某些泛函。在分类树中,我们使用交叉熵和Gini指数。在回归树中,我们最小化了下降区域的点的目标值的预测变量和我们分配给它的值之间的平方误差的总和。 ?...有时,你的特征范围很广,彼此之间的关系可能高度相关,而且模型可以很容易地覆盖大量的数据。然后,你就可以应用PCA了。

    2K30

    函数式编程(FP)

    柯里化 (currying) 假设一个场景,我们需要写一个函数来判断一个人的年龄是否大于 18 岁。...checkAge(lucy.age) checkAge(bob.age) 这样没什么问题,但是我们如果要更改基准值的时候判断是否大于 20,那可能又需要重新定义一个 checkAge20 的新函数了。...函子:一个特殊的容器,通过一个普通的对象来实现,该对象具有 map 方法, map 方法可以运行一个函数对值进行处理(变形关系)。..._value = value } //接收一个处理值的函数 map(fn){// map 是一个契约名称 fn 需要是一个纯函数 //返回一个新的函子 return new...函数式编程为组件的编写提供了更高的灵活度与可读性。 总结 函数式编程是一种范式、一种思想、一种约定。他有着一定的优势,更高的可组合性,灵活性以及容错性。

    1.7K10

    【Python环境】Python语言下的机器学习库

    我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。...如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。...这个库只使用Python编写。 Orange Orange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface,GUI)的。...它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。...Julia -> PyCall.jl 不活跃的库 这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。

    93560

    【机器学习】Python语言下的机器学习库

    我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。...如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。...这个库只使用Python编写。 Orange Orange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface,GUI)的。...它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。...Julia -> PyCall.jl 不活跃的库 这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。

    794100

    Python最有用的机器学习工具和库

    我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。...如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。...这个库只使用Python编写。 Orange Orange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User Interface,GUI)的。...它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。...Julia -> PyCall.jl 不活跃的库 这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。

    1K50

    泛函编程(0)-什么是泛函编程

    什么是泛函编程(Functional Programming)?泛函编程就是用函数编写程序。这个回答太抽象,等于没说。...再说清楚一点:泛函编程就想砌积木一样把函数当成积木块,把函数的输出输入作为积木的楔子和楔孔,把一个函数的输出当作另一个函数的输入组合成一个更大的函数。整个砌积木的过程就是泛函编程。...而在泛函编程中我们首先按照程序要求把一些特定的函数用特定的方式组合起来形成另一个独立的大函数;然后把一些东西输入到这个大函数的输入口;当输入物经过那条由内部组件函数输入输出形成的曲折通道到达输出口时就产生了需要的结果...要知道泛函编程是一个全新的编程范畴。     如果泛函编程就是组合函数,那这可是一种全新的编程方式。如何实现函数的组合呢?...泛函编程是以数学理论(⋋-culculus)为基础的,程序函数的组合是通过数学函数组合定律来实现的。嗯,的确是一套全新的概念,那就让我们从头学起吧。

    1.3K80

    泛函编程(16)-泛函状态-Functional State

    我想这主要是因为状态变迁机制经过了函数组合,已经深深的埋藏在运行代码后面。上节我们讨论到RNG,对于了解State类型是个很好的开头。...State类型的状态变迁机制就是通过状态行为函数来确定的。...再次聚焦一下我们设计State类型的目标:State类型不但可以使我们像设计其它类型一样封装一个较低阶类型元素并且提供一套状态变迁机制,而且状态变迁机制是泛函式的,自然隐性的。...它就是一个封装元素值和状态都不转变的State实例。unit的唯一功能就是把低阶一级的封装元素类型a升格为State类型。 我们来编写一个State函数,切记!切记!...(syntatic sugar)for-comprehension让我们俨然进入了一个泛函世界,好像有了一种兴奋的感觉。

    913100

    泛函编程(30)-泛函IO:Free Monad-Monad生产线

    在介绍Free Monad之前我们先从一个现实的例子来展开讨论: 假设我们要编写一个银行转账的函数,我们可能先把这个函数的款式(function signature)推导出来: 1 def transfer...对于一个泛函编程人员来讲:通过这个context object 可以进行一系列的操作。包括IO操作,也就是说可以进行一些含有副作用(side effect)的操作。...那么这个函数是无法实现函数组合(function composition)。transfer函数就不是一个泛函编程人员该使用的函数了。...也许我们应该从泛函编程角度来尝试设计这个函数:用泛函编程提倡的不可蜕变(immutability)方式来设计,也就是向函数调用方返回一些东西。...Interpreter程序运算是通过一个转换函数实现的。这个函数把F[_]这样一个算法解译成G[_]这样一个针对可运行环境的Monad运行代码。

    1.1K70

    . | 避免耗时的自洽场迭代,DeepH-hybrid推动从头计算方法领域发展

    作者开发了一种名为DeepH-hybrid的深度等变神经网络方法,用于学习杂化泛函哈密顿量与材料结构的关系。该方法避免了耗时的自洽场迭代,使得大规模材料的杂化泛函精度研究成为可能。...密度泛函理论(DFT)的一个里程碑式发展是杂化泛函(hybrid functionals)的发明,最初作为局域密度近似或广义梯度近似(LDA/GGA)的一个修正提出,后来在广义Kohn-Sham框架中得到了更为严格的表述...杂化泛函相较于LDA/GGA的一个主要改进是对带隙的更好描述,这与光学性质密切相关。...理论上,更先进的杂化泛函方法可能会改进对电子结构的描述,但其计算成本远高于DFT-PBE。杂化泛函在描述中是否能保持平带特征是一个基本重要的问题,但由于计算挑战,此前未曾研究过。...两个模型在测试集上的带隙平均误差为15.1和16.0 meV,比PBE和HSE泛函之间的带隙差异小了一个数量级。 图4c–f考察了从非扭曲双层MoS2到扭曲结构的泛化能力。

    12610

    泛函编程(18)-泛函库设计-并行运算组件库

    但在泛函工具库里的函数则更重视函数的组合能力(functional composition);因而泛函的工具库一般称为组件库(combinator library),库内函数则被称之为组件(combinator...这个Par类型很像我们前面接触的高阶类型,那个承载A类型元素的管子类型。如果这样去想的话,我们可以用前面所有针对高阶类型的函数对管子内的元素A进行操作处理。...假设我们选择用由程序员调用一个函数来确定产生新线程。...这样有两个优越:1、可以有更灵活的并行运算策略(有些已经确定很快完成的运算可能没有必要用新的线程,独立线程运算可能消耗更多的资源);2、独立线程机制和并行运算是松散耦合的:Par的实现中不需要了解线程管理机制...我们在这节介绍了一个简单的泛函并行组件库设计,可以把一个运算放到主线程之外的另一个新的线程中计算。但是抽取运算结果却还是会锁定线程(blocking)。

    69570

    【Rust日报】 2019-05-24:Rust 1.35.0 稳定版发布

    Read More 对于一些人对「Rust编写命令行应用」产生误解的说明 ? 他说的很对,Rust近两年确实是开启了一场轰轰烈烈的命令行大替换运动。但是不是悲剧呢?...按他的说法:Rust产出的这个命令行工具大小基本是4MB以上,性能要59ms,所以,这个太悲剧了。 拿Rust编写的替代ls命令的exa来说,brew安装大小是1.4MB,其实也没超过2MB。...我在本地尝试用exa列出TiKV(算得上一个大型项目了)的树形列表,也没有感觉到有卡顿。所以悲剧在哪? 软件写出来是让人用的吧?...你每天列出数百次文件,为什么你要花时间眯着眼睛看黑白文字?...exa提供了很多功能,其中,高亮显示文本(区分各种元数据、文件、目录、或其他格式,比如symlinks),是大多数Rust编写的命令行工具的底线。

    61630
    领券