题目:
Given a string s, partition s such that every substring of the partition is a palindrome.
Return all possible palindrome partitioning of s.
For example, given s = "aab"
,
Return
[ ["aa","b"], ["a","a","b"] ]
代码:
public class Solution { public ArrayList<ArrayList<String>> partition(String s) { // Start typing your Java solution below // DO NOT write main() function ArrayList<ArrayList<String>> list = null; int len = s.length(); boolean[][] isPalin = new boolean[len][len]; for(int i=0;i<len;i++){ for(int j=0;j<=i;j++){ if(s.charAt(i) == s.charAt(j) && (i-j < 2 || isPalin[j+1][i-1])){ isPalin[j][i] = true; } } } list = result(s,isPalin,0,len); for(ArrayList<String> l : list){ Collections.reverse(l); } return list; } public ArrayList<ArrayList<String>> result(String s,boolean[][] isPalin,int start,int max){ if(start >= max){ ArrayList<String> l = new ArrayList<String>(); ArrayList<ArrayList<String>> list = new ArrayList<ArrayList<String>>(); list.add(l); return list; } ArrayList<ArrayList<String>> all = new ArrayList<ArrayList<String>>(); for(int i=start;i<max;i++){ if(isPalin[start][i]){ ArrayList<ArrayList<String>> list = result(s,isPalin,i+1,max); String temp = s.substring(start,i+1); for(ArrayList<String> l : list) l.add(temp); all.addAll(list); } } return all; } }
相关推荐
例如,“madam”、“racecar”等都是回文字符串。回文检测是计算机科学中的一个经典问题,广泛应用于文本处理、密码学等领域。 #### 二、C#语言基础 本示例代码使用了C#语言编写,主要涉及以下几个方面: - **数组...
这样,原字符串的每个字符都在新字符串的偶数位置上,而奇数位置用'#'分隔。 2. 初始化P和R为0,然后从每个位置i开始,分别尝试扩展回文串,同时更新P和R。在扩展过程中,利用对称性减少不必要的比较。 3. 当i>R时...
10. **字符串分解**:如找到字符串的所有子串、所有子序列,或者按特定规则分割字符串,如通过分隔符进行拆分。 在ACM竞赛中,字符串处理的题目往往需要结合其他数据结构和算法,如栈、队列、图、树、动态规划等,...
以上内容涵盖了快速排序算法、字符串处理、回文字符串判断等计算机科学基础知识,这些都是程序员应具备的基本技能。对于准备软考的考生来说,不仅要理解和掌握这些知识点,还需要通过大量练习题来提高解题能力和应用...
判断一个字符串是否是回文,输入一个字符串如果是回文输出yes,不是输出no。
12. **REVERSE**: 此函数返回输入字符串的反向顺序,可用于各种文本操作,如检查回文字符串。 13. **SPACE**: SPACE函数根据输入的整数返回相应数量的空格,常用于创建空白填充。 14. **STR**: 将数字数据转换为...
1. **字符串预处理**:为了统一处理奇数和偶数长度的回文串,Manacher算法首先会在原始字符串的每个字符之间插入一个特定的分隔符(通常选择不会出现在原串中的字符,如'#'),并在字符串的首尾也添加同样的分隔符。...
6. **分离单词**:可能涉及到字符串的分隔操作,例如通过空格、标点符号等将字符串切割成单词列表。这通常需要用到字符串的`split()`函数。 7. **字符串搜索与匹配**:KMP算法、Boyer-Moore算法等高级搜索技术可以...
在上述代码中,我们首先处理输入字符串,插入分隔符使其变为奇数长度,然后创建数组P来记录以每个字符为回文中心时,到达的最远位置。通过中心扩展法更新P数组的值,最终我们能够得到每个位置为中心的最长回文半径,...
print("{0}不是回文字符串".format(string)) ``` **题目六:** 对一个列表进行排序。使用内置函数`sorted()`对列表进行升序排序。 ```python list = input("请输入一个列表,元素之间用逗号分隔:") list = list....
1. **使用栈和队列实现字符串的反转**:这是判断回文序列的一种经典方法,利用了栈和队列的不同特性来完成字符串的反转和比较。 2. **边界条件的考虑**:在实现过程中需要注意边界条件的处理,比如数组越界、空字符...
算法的核心思想是在原始字符串的每个字符之间插入一个特殊分隔符(通常使用非原始字符集中的字符如#),从而将原始字符串转换为新的字符串。这样做的目的是将奇数长度和偶数长度的回文串统一处理,因为插入分隔符后...
包括算法的基本特征、分治法与动态规划的区别、贪心算法的适用性、递归方程求解、快速排序及其时间复杂性分析、寻找第k小元素的算法、堆排序的实现及时间复杂性、回文字符串的检测以及回文子串的查找。下面将对这些...
3. **回文字符统计**:`hw`函数用于检查一个字符串是否为回文,即正读和反读都相同。通过比较字符串的前半部分和后半部分的对应字符来实现此功能。 4. **统计字母出现次数**:`Command1_Click`事件处理程序统计文本...
对称字符串(或回文字符串)是指正向读和反向读都一样的字符串。例如,“madam”、“level”都是对称字符串。判断一个字符串是否为对称字符串的关键在于比较该字符串与其反转后的字符串是否相同。 #### 2. `...
4. **最长回文串长度**:这个问题是寻找一个字符串中最长的回文子串,即正读和反读都一样的字符串。`getLongestPalindrome`函数可能用于解决此问题,但提供的代码片段不完整。通常,可以使用动态规划或者Manacher's ...
6. Manacher's Algorithm:一种优化的线性时间复杂度的求解字符串中最长回文子串的算法,特别适合处理长度为奇数的回文串。 7. 字符串压缩:通过编码技术(如Run-Length Encoding、霍夫曼编码等)减少存储空间,...
├─004 字符串分隔 │ └─Source ├─005 进制转换 │ └─Source ├─006 质数因子 │ └─Source ├─007 取近似值 │ └─Source ├─008 合并表记录 │ └─Source ├─009 提取不重复的整数 │ └─Source ├...
22. 求字符串中最大回文子串:考察对字符串中回文子串搜索算法的实现。 23. 找出^n的数:涉及数学的幂运算和可能的数学优化技巧。 24. 统计一个数二进制表达中的个数:需要对二进制数进行操作和计数。 25. 镜像...