题目:分割回文串
2015-08-19 18:52
134 查看
给定一个字符串s,将s分割成一些子串,使每个子串都是回文串。
返回s所有可能的回文串分割方案。
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
给出 s = "aab",返回
[
["aa","b"],
["a","a","b"]
]
标签 Expand
回溯法
相关题目 Expand
public class Solution {
/**
* @param s: A string
* @return: A list of lists of string
*/
public List<List<String>> partition(String s) {
// write your code here
List<List<String>> pLists = new ArrayList<>();
int length = s.length();
List<String> array = new ArrayList<>();
if (s.length() == 0 || s == null) {
pLists.add(array);
return pLists;
}
dfs(s, pLists, array, 0);
return pLists;
}
public void dfs(String s, List<List<String>> pLists,
List<String> array, int start) {
if (start == s.length()) {
pLists.add(array);
return;
}
for (int i = start; i < s.length(); i++) {
if (Ispalindrome(s.substring(start, i + 1))) {
List<String> tmp = new ArrayList<String>(array);
tmp.add(s.substring(start, i + 1));
dfs(s, pLists, tmp, i + 1);
}
}
}
/**
*
* @param num
* @return
*/
public boolean Ispalindrome(String str) {
if (str == null)
return false;
boolean flag = true;
int i = 0, j = str.length() - 1;
while (i <= j) {
if (str.charAt(i) != str.charAt(j)) {
flag = false;
break;
}
i++;
j--;
}
return flag;
}
}
返回s所有可能的回文串分割方案。
您在真实的面试中是否遇到过这个题?
Yes
哪家公司问你的这个题?
Airbnb
Alibaba
Amazon Apple
Baidu Bloomberg
Cisco Dropbox
Ebay Facebook
Google Hulu
Intel Linkedin
Microsoft NetEase
Nvidia Oracle
Pinterest Snapchat
Tencent Twitter
Uber Xiaomi
Yahoo Yelp
Zenefits
感谢您的反馈
样例
给出 s = "aab",返回
[
["aa","b"],
["a","a","b"]
]
标签 Expand
回溯法
相关题目 Expand
public class Solution {
/**
* @param s: A string
* @return: A list of lists of string
*/
public List<List<String>> partition(String s) {
// write your code here
List<List<String>> pLists = new ArrayList<>();
int length = s.length();
List<String> array = new ArrayList<>();
if (s.length() == 0 || s == null) {
pLists.add(array);
return pLists;
}
dfs(s, pLists, array, 0);
return pLists;
}
public void dfs(String s, List<List<String>> pLists,
List<String> array, int start) {
if (start == s.length()) {
pLists.add(array);
return;
}
for (int i = start; i < s.length(); i++) {
if (Ispalindrome(s.substring(start, i + 1))) {
List<String> tmp = new ArrayList<String>(array);
tmp.add(s.substring(start, i + 1));
dfs(s, pLists, tmp, i + 1);
}
}
}
/**
*
* @param num
* @return
*/
public boolean Ispalindrome(String str) {
if (str == null)
return false;
boolean flag = true;
int i = 0, j = str.length() - 1;
while (i <= j) {
if (str.charAt(i) != str.charAt(j)) {
flag = false;
break;
}
i++;
j--;
}
return flag;
}
}
相关文章推荐
- 析构函数抛出异常
- UVa-442 Matrix Chain Multiplication
- 【ShaderToy】水彩画
- 安装Rapidsvn 0.21.1
- hadoop出现namenode running as process 18472. Stop it first.
- 利用Word将连着一起的字符按照自己指定的”字符串或者字换行“自动换行。
- 博客暂时停更
- VMware下Win7主机和Ubuntu14.04虚拟机共享文件
- 初步篇7分支结构程序体验项目1求两数正差值
- 10进制转16 进制
- 骗子——拜佛与交友
- Delphi-string转pbyte的方法——Move函数!
- 题目:二进制求和
- 安卓中eclipse不显示窗口与出现许多不认识的东西
- 集合框架-工具类-Collections
- 辛星浅析乐观锁和悲观锁
- 17 网络客户端编程 - 《Python 核心编程》
- linux 硬链接与软链接
- HDU 1711 KMP算法模板
- Delphi流操作技巧