前言
偶然在网上看到casa的网络层设计方案,在以前的iOS开发中,用的最多的就是集约型的网络请求+去Model的形式,然而在看完这篇文章之后我觉得好像发现了新大陆,原来还可以这么玩。
所有的东西你都要坚持到最后才知道值不值得
给出一个链表和一个数X,要求将链表中所有小于X的值放到左边,等于或者大于X的值放到右边,并且原链表的节点顺序不变。
示例:
假设: 1->7->3->5->2->8->4,给定x=4
那么变换后的节点为: 1->3->2->7->5->8->4
在第一篇介绍中已经介绍了如果发布一个私有pod,下面将会介绍如何基于一个现有的项目拆分成组件化形式的项目。
假设我们现有的项目是有一个AViewController,还有一个BViewController,目前的功能是点击rootViewController页面的按钮会push到AviewController,然后点击AviewController的一个按钮会跳转到BViewController。这里是未拆分的demo
给定一个字符串,找出不含有重复字符的最长子串的长度。
示例:
给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。
给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。
给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。
给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。
思路:
- 只要两个非空链表中的其中一个链表不为空的时候就循环便利两个链表
- 如果其中一个链表为空而另外一个链表不为空,那么为空的那个链表的值就为0
- 用一个carry位来表示是否有进位,0代表无进位,1代表有进位,因为链表中都是个位数,所以最大进位也只能为1,初始化进位为0
- 用x,y来表示当前两个链表的值,sum = x+y+carry为新链表的值,但是有可能有进位,所以新的carry = sum / 10,当前节点位的值为sum = sum %10。
本次组件化实践的方式来自于casaty组件化方案,该方案是基于target-action模式和Mediator模式,通过Mediator利用runtime的机制来调用对应的target-action。并且在上层通过category的方式暴露对外调用的接口,这样调用者在调用的时候就知道需要传递哪些参数。