摘要: 题目:正则表达式的匹配,'.'能匹配任何一个字符,'*'之前必须有一个字符,两个结合起来表示之前那个字符出现0到无穷次。解法:一定要注意'*'必须结合前面的字符一起使用。代码: 1 class Solution { 2 public: 3 bool isMatch(const char *s... 阅读全文
posted @ 2014-06-02 23:16 阿杰的专栏 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 题目:判断一个数字是不是回文数字,即最高位与最低位相同,次高位与次低位相同,...解法:求出数字的位数,然后依次求商和求余判断是否相等。代码: 1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 if(x =... 阅读全文
posted @ 2014-06-02 22:23 阿杰的专栏 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目:字符串转换为数字。解法:这道题的意思是要考虑到,如果有前置的空字符,则跳过;如果超出数字范围,则返回最大/最小整数;如果碰到第一个不能转换的字符,则返回。代码: 1 class Solution { 2 public: 3 int atoi(const char *str) { 4 ... 阅读全文
posted @ 2014-06-02 22:06 阿杰的专栏 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 题目:数字翻转,即输入123,返回321;输入-123,返回-321。代码: 1 class Solution { 2 public: 3 int reverse(int x) { 4 int result = 0, sign = 1; 5 if(x < 0... 阅读全文
posted @ 2014-06-02 21:42 阿杰的专栏 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目:把一个字符串按照Z型排列后打印出来,例如"PAYPALISHIRING" 重新排列后为3行,即P A H NA P L S I I GY I R那么输出为"PAHNAPLSIIGYIR"解法:细节实现题,假如重新排列为5行,那么排列后的下标分布应该为0 8 ... 阅读全文
posted @ 2014-06-02 15:17 阿杰的专栏 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个字符串S,返回S中最长的回文子串。S最长为1000,且最长回文子串是唯一。解法:①遍历,对于每个字符,计算以它为中心的回文子串长度(长度为奇数),同时计算以它和右边相邻字符为中心的回文子串长度(长度为偶数)。时间为O(N2)。②另外,有一个很奇妙的算法,称为Manacher算法,参考h... 阅读全文
posted @ 2014-06-02 11:39 阿杰的专栏 阅读(431) 评论(0) 推荐(0) 编辑
摘要: 题目:两个数字求和,数字用链表表示,每一个结点代表一位。链表顺序与数字顺序相反,即表头存放数字的最低位。解法:分别遍历两个链表的每个结点,对两个结点求和即可。要维护一个变量保存每次相加之后的进位。更常见的,链表顺序与数字顺序相同,那么做一次链表逆序,求和之后再逆序回来即可。代码: 1 /** 2 ... 阅读全文
posted @ 2014-06-02 09:49 阿杰的专栏 阅读(2442) 评论(1) 推荐(0) 编辑