我的任务有问题。我必须制作一个程序,输入是回文/不是回文,输出是返回字符串的子字符串,该子字符串可以是递归的回文。例:
"marah",输出应该是,("m","a","r","a","h") , ("m","ara","h") 。我不知道在递归中实现这一点。请任何可以帮助我的人,我非常需要该代码。我用java工作过。谢谢,我希望:D有帮助。
public static String palindrome(String s) {
String s, sub;
int i, c, length;
Scanner in = new Scanner(System.in);
System.out.println("Enter a string to print it's all substrings");
s = in.nextLine();
length = string.length();
System.out.println("Substrings of "" + string + "" are :-");
for (c = 0; c < length; c++) {
for (i = 1; i <= length - c; i++) {
sub = string.substring(c, c + i);
System.out.println(sub);
}
}
}
public static String longestPalindrome(String s) {
if (s.isEmpty()) {
return null;
}
if (s.length() == 1) {
return s;
}
String longest = s.substring(0, 1);
for (int i = 0; i < s.length(); i++) {
// get longest palindrome with center of i
String tmp = helper(s, i, i);
if (tmp.length() > longest.length()) {
longest = tmp;
}
// get longest palindrome with center of i, i+1
tmp = helper(s, i, i + 1);
if (tmp.length() > longest.length()) {
longest = tmp;
}
}
return longest;
}
// Given a center, either one letter or two letter,
// Find longest palindrome
public static String helper(String s, int begin, int end) {
while (begin >= 0 && end <= s.length() - 1 && s.charAt(begin) == s.charAt(end)) {
begin--;
end++;
}
return s.substring(begin + 1, end);
}
如果输入是"妈妈",则输出仅为"AMA",则预期为"m","a","m","a","mam","a"和"m","ama"。有人可以帮忙吗?
被称为回文分区,你可以在这里找到它 http://www.programcreek.com/2013/03/leetcode-palindrome-partitioning-java/