leetcode第三周解题总结(5,7,66)
2017-03-14 23:04
302 查看
5. Longest Palindromic Substring
Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:
Input: “babad”
Output: “bab”
Note: “aba” is also a valid answer.
Example:
Input: “cbbd”
Output: “bb”
题意解析:
寻找字符串中的最长回文子串
解题思路:
第一周做过一个类似的判断是否为回文字串的题目(125. Valid Palindrome),但这道题似乎就没那么简单,要找到最长的回文字串。一个思路是遍历所有的中心对称点,如果有n个字符,那么就有(2n - 1)个中心对称点,在每个对称点上用两个指针的方法寻找最长的回文字串,最后输出最长的字符串。
class Solution { public: string longestPalindrome(string s) { size_t len = s.size(); if(len == 0 || len == 1) return s; int left = 0, right = 0; for (size_t point = 0; point < len; point++) { int start = point; int end = point; while(start >= 0 && end < len && s[start]==s[end]){ start --; end ++; } if(end - start > right - left) { left = start; right = end; } start = point; end = point + 1; while(start >= 0 && end < len && s[start]==s[end]){ start --; end ++; } if(end - start > right - left) { left = start; right = end; } } return s.substr(left + 1, right - 1 -left); } };
开始第二个知识点的学习 — Math
7. Reverse Integer
Reverse digits of an integer.Example1: x = 123, return 321
Example2: x = -123, return -321
Note:
The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.
题意解析:
32位有符号整数的翻转,如果溢出则返回0
解题思路:
数学题,思路并不难,直接看代码即可。
class Solution { public: int reverse(int x) { int y = 0; while (abs(x) > 0) { if(abs(y) > INT_MAX/10 || (abs(y) == INT_MAX/10 && (x >= 7 || x <= -8))) return 0; y = y*10 + x%10; x = x/10; } return y; } };
66. Plus One
Given a non-negative integer represented as a non-empty array of digits, plus one to the integer.You may assume the integer do not contain any leading zero, except the number 0 itself.
The digits are stored such that the most significant digit is at the head of the list.
题意解析:
非负整数加1,进位操作
解题思路:
只有当该数字每一位上都是9才会增加一位,而其他情况则比较简单,直接进位操作
class Solution { public: vector<int> plusOne(vector<int>& digits) { size_t len = digits.size(); for (int i = len - 1; i >= 0; i--) { if (digits[i] < 9) { digits[i] += 1; return digits; } else { digits[i] = 0; } } digits[0] = 1; digits.push_back(0); return digits; } };
相关文章推荐
- LeetCode解题报告--2Sum, 3Sum, 4Sum, K Sum求和问题总结
- leetcode -- 解题总结--DP与DFS, 递归
- leetcode第八周解题总结
- leetcode第十二周解题总结--动态规划
- leetcode第十一周解题总结(155,150,20)--栈
- leetCode 66.Plus One (+1问题) 解题思路和方法
- leetcode第十六周解题总结--图
- leetcode第六周解题总结(98)
- leetcode第五周解题总结(138, 23)
- leetcode第十四周解题总结--二分查找
- Leetcode解题思路总结(Easy)
- leetcode解题总结(持续更新)
- Leetcode解题思路总结(Easy)
- leetcode第七周解题总结
- leetcode第二周解题总结(3,8,65)
- leetcode刷题,总结,记录,备忘66
- Leetcode 66. Plus One 加一! 解题报告
- leecode 解题总结:66. Plus One
- leetcode第十周解题总结
- leetcode第十五周解题总结--二分查找(二)