【发布时间】:2014-12-23 19:02:08
【问题描述】:
你好,我一直试图从这个输入中形成回文:
String[] text ={"ivcci", "oyotta", "cecarar","bbb","babbbb"};
getPalindrome(text);
我需要重新排列数组中的所有单词来产生这个输出
civic
-1
rececar
bbb
bbabb
该方法期望接收一个字符串数组,例如
public static String getPalindrome(String[] text){}
“返回 -1 表示数组中的 i.g “oyotta” 不能形成回文
我一直在测试这段代码并且它可以工作,但是例如“cecarar”没有产生“racecar”,因为我在 java 中有点新我使用了一个字符串而不是一个字符串数组,任何人都可以帮助正确编写这段代码请问?
非常感谢!
public static String getPalindrome(String s) {
if (s == null)
return null;
Map<Character, Integer> letters = new HashMap<Character, Integer>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (!letters.containsKey(c))
letters.put(c, 1);
else
letters.put(c, letters.get(c) + 1);
}
char[] result = new char[s.length()];
int i = 0, j = result.length - 1;
Character middle = null;
for (Entry<Character, Integer> e : letters.entrySet()) {
int val = e.getValue();
char c = e.getKey();
if (val % 2 != 0) {
if (middle == null && s.length() % 2 != 0) {
middle = c;
val--;
} else
return "-1";
}
for (int k = 0; k < val / 2; k++) {
result[i++] = c;
result[j--] = c;
}
}
if (middle != null)
result[result.length / 2] = middle;
return new String(result);
}
【问题讨论】:
-
好吧
ivcci,cecarar和babbbb不是回文 -
我确定他的意思是
civic和racecar。 -
不管他的意思是什么,程序都不会知道那些意图……有了这些输入。
-
你得到的输出是什么?
-
我的猜测是找到可以转换为回文的输入并这样做。
标签: java arrays palindrome sequences