题目要求: 实现C++单例模式,即只能生成一个实例的类. 题目分析: 1.一般情况:用构造函数私有化和静态函数实现. 2.如果考虑内存泄露:用智能指针+一般情况方法. 3.如果考虑线程安全:加锁. 代码实现: //一般情况 #include <memory> #include <string> #include <iostream> using namespace std; class Singleton { private : Singleton(){cout <…
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数. 示例: 输入: 38 输出: 2 解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2. 由于 2 是一位数,所以返回 2. class Solution: def addDigits(self, num): """ :type num: int :rtype: int """ if num < 10: return num sum = num whil…
原文:C++ 与"类"有关的注意事项总结(十二):按成员初始化 与 按成员赋值 一.按成员初始化(与构造函数和拷贝构造函数有关) 用一个类对象初始化另一个类对象,比如: Account oldAcct( "Anna Livia Plurabelle" ); Account newAcct( oldAcct ); 被称为缺省的按成员初始化(default memberwise initialization),缺省是因为它自动发生,无论我们是否提供显式构造函数,按成员是…
Integer to Roman 问题简介:将输入的int类型数字转化为罗马数字 问题详解:罗马数字由七个不同的符号表示:I,V,X,L,C,D和M 符号-数值 I - 1 V - 5 X -10 L - 50 C - 100 D - 500 M - 1000 例如,2用罗马数字写成II,只有两个I加在一起,十二写为XII,解释为X + II, 二十七写成XXVII,即XX + V + II, 罗马数字通常从左到右从最大到最小,但是,四个数字不是IIII,相反,第四个写为IV,因为一个在五个之前…
程序逻辑问题分值:20 来源: 实验吧 难度:中 参与人数:6909人 Get Flag:1993人 答题人数:2070人 解题通过率:96% 绕过 解题链接: http://ctf5.shiyanbar.com/web/5/index.php 原题链接:http://www.shiyanbar.com/ctf/62 [解题报告] 这是我入门Web开始写的第十二道题,这道题我们首先先查看它的源代码,发现它源代码里面有个隐藏的txt文件,我们点击查看一下隐藏的源代码,很显然,这是一道和php有关的…
题目要求: 类CMyString的声明如下: class CMyString { public: CMyString(char *pData=NULL); CMyString(const CMyString &str); ~CMyString(void); CMyString &operator=(const CMyString &str); private: char *m_pData; }; 请实现其赋值运算符的重载函数,要求异常安全,即当对一个对象进行赋值时发生异常,对象的状…
题目要求: 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1.2.3.4.5是某栈的压栈序列,序列4.5.3.2.1是该压栈序列对应的一个弹出序列,单4.3.5.1.2就不可能是该压栈序列的弹出序列. 参考资料:剑指offer第22题. 题目分析: 如果下一个弹出的数字刚好是栈顶数字,那么直接弹出.如果下个弹出的数字不在栈顶,我们把压栈序列中还没有入栈的数字艳茹辅助栈,知道把下一个需要弹出的数字压入栈顶为止.如果所有的数…
题目要求: 要求不能使用乘除法,for/while/if/else/switch/case等关键字以及条件判断语句(A?B:C). 参考资料:剑指offer第46题 题目分析: 方法1:利用类的静态成员变量,定义一次之后该类的所有对象都共享该静态成员变量.再利用构造函数实现n次递加即可: 方法2:利用函数指针: 方法3:利用虚函数和动态联编(虚函数和动态联编介绍:http://blog.csdn.net/qlping2007/article/details/2177880). 代码实现: 方法1…
题目要求:定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的min函数.在该栈中,调用min.push及pop的时间复杂度都是O(1). 参考题目:剑指offer第21题. 题目分析: 1.采用面向对象思想,定义类StackWithMin,包含min.push和pop等方法: 2.StackWithMin类中包含两个栈:一个数据栈,一个辅助栈.数据栈中是每次压入的实际数据,辅助栈中是对应数据栈的当前结点的最小值. 解释:假设数据栈为stackdata,辅助栈为stackmin;令压栈数…
题目要求 1.strcpy/memcpy/memmove: 2.memset函数: 3.字符串处理函数. 题目分析 1.接口定义: char * strcpy(char * dest, const char * src): void *memcpy(void *memTo, const void *memFrom, size_t size): void *memmove(void *dst,const void *src,size_t n):  函数区别: -->strcpy 和 memcpy主…