摘要:
在字符串中找出第一个只出现一次的字符。如输入:“aabcdc”,则输出b 。
思路:我们可以把数组当做一个简单的哈希表来用,把每个字母的ASCII码值作为在数组中的位置(下标),数组中存储的是该字符出现的次数。这样我们就创建了一个以字符ASCII码为健值的哈希表。 阅读全文
摘要:
'\0'是C++中字符串的结尾标志,存储在字符串的结尾。 阅读全文
摘要:
只包含因子2,3,5的数称作丑数。要求按从小到大的顺序输出指定数量的丑数。
有2中方法:
第一种:用穷举法,从最小的1开始判断穷举,是丑数就输出,否则继续循环判断。判断的方法是:如果一个数能被2整除,我们把他连续除以2;如果能被3整除,我们把他连续除以3;如果能被5整除,我们把他连续除以5。如果最后得到的值为1,那么这个数就是丑数。
第二种:用空间换时间,创建一个数组,里面的数字是排好序的丑数,下一个丑数是前面丑数乘以2、3、5得到的大于当前最大丑数的最小一个数。和第一种思路相比,第二种思路不需要在非丑数上做任何计算,因此时间效率会明显提升,但增加了空间消耗。 阅读全文
摘要:
在以下集中情况下可以用 Proxy模式解决问题:
1)创建开销大的对象时候,比如显示一幅大的图片,我们将这个创建的过程交给代理去完成,GoF 称之为虚代理(Virtual Proxy);
2)为网络上的对象创建一个局部的本地代理,比如要操作一个网络上的一个对象(网络性能不好的时候,问题尤其突出) ,我们将这个操纵的过程交给一个代理去完成,GoF 称
之为远程代理(Remote Proxy);
3)对对象进行控制访问的时候,比如在 Jive 论坛中不同权限的用户(如管理员、普通用户等)将获得不同层次的操作权限,我们将这个工作交给一个代理去完成,GoF 称之为保
护代理(Protection Proxy)。
4)智能指针(Smart Pointer)。 阅读全文