[经典] 回文问题(一)
2016-04-19 20:19
267 查看
Palindrome Number 回文数字
Determine whether an integer is a palindrome. Do this without extra space.
前期处理,首先负数/10的倍数,直接return false;
然后【1】直观做法是,知道N位数,根据value/10^(N-i)和value%10^i来判断,然后value=value%10^(N-i)/10^i,其中i = 1,..., N/2 【2】Brilliant做法是,通过value的最后一位,作为新数的当前位,循环操作,直到value/=10更新后的value <= 新数,复杂度更低,return value == 新数
Valid Palindrome 回文字符串
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
两端下标,往中间靠近,判断是否相同字母(其中大小写相差d = 'A' - 'a',根据'A~Z','a~z'范围来判断+-d)
Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. O(1) space
//Definition for singly-linked list.
struct ListNode {
int val;
struct ListNode *next;
};
要求O(1)空间复杂度,通过分割、翻转、双指针遍历完成
Palindrome Permutation I
Given a string, determine if a permutation of the string could form a palindrome.
For example,
用一个数组(或者hash)计数,如果奇数数目的字母个数大于1个,则return false;否则return true。时间复杂度为O(N)遍历一次+O(1)遍历一次 = O(N)。
Palindrome Permutation II
Given a string
For example:
Given
Given
跟1一样的思想,由于要全部输出,就DFS回溯
Determine whether an integer is a palindrome. Do this without extra space.
前期处理,首先负数/10的倍数,直接return false;
然后【1】直观做法是,知道N位数,根据value/10^(N-i)和value%10^i来判断,然后value=value%10^(N-i)/10^i,其中i = 1,..., N/2 【2】Brilliant做法是,通过value的最后一位,作为新数的当前位,循环操作,直到value/=10更新后的value <= 新数,复杂度更低,return value == 新数
Valid Palindrome 回文字符串
Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
两端下标,往中间靠近,判断是否相同字母(其中大小写相差d = 'A' - 'a',根据'A~Z','a~z'范围来判断+-d)
Palindrome Linked List 回文链表
Given a singly linked list, determine if it is a palindrome. O(1) space
//Definition for singly-linked list.
struct ListNode {
int val;
struct ListNode *next;
};
要求O(1)空间复杂度,通过分割、翻转、双指针遍历完成
Palindrome Permutation I
Given a string, determine if a permutation of the string could form a palindrome.
For example,
"code"-> False,
"aab"-> True,
"carerac"-> True.
用一个数组(或者hash)计数,如果奇数数目的字母个数大于1个,则return false;否则return true。时间复杂度为O(N)遍历一次+O(1)遍历一次 = O(N)。
Palindrome Permutation II
Given a string
s, return all the palindromic permutations (without duplicates) of it. Return an empty list if no palindromic permutation could be form.
For example:
Given
s = "aabb", return
["abba", "baab"].
Given
s = "abc", return
[].
跟1一样的思想,由于要全部输出,就DFS回溯
相关文章推荐
- android开发 用线程进行耗时操作,统一处理 第二版
- 深入理解synchronized
- Android官方开发文档Training系列课程中文版:调用相机之控制相机
- ansible的安装部署及简单应用
- 插入排序(InsertionSort)
- 剑指offer之找没有重复出现的数字
- 多表连接查询
- ansible的安装部署及简单应用
- 站立会议01
- 配置visual studio code进行asp.net core rc2的开发
- 使用GoodFeaturesToTrack进行关键点检测---29
- 深入理解Lock
- [leetcode] 341. Flatten Nested List Iterator
- 51nod 1060 最复杂的数(反素数)
- javaScript数组循环删除
- Annotation
- html的元素分类
- 15.set集合
- python list排序
- 详解Unity Profiler内存分析问题