赞
踩
为了检测字符串是否是回文,我将字符串分成两半,将字符串反转,看看双方是否相等。
有两种情况:
Word的字符数为偶数:
如果字符串的长度为奇数,则将字符串分为2个子字符串(中间字符除外):例如:ABCBA将分为AB和BA。 然后,我们反转字符串并进行比较以查看它们是否彼此相等。
Word的字符数为奇数:
如果字符串的长度是偶数,我们只需将字符串分成2个相等大小的子字符串,然后反转其中之一,然后进行比较以查看它们是否为同一字符串。 例如:汉娜将是汉族和罗汉族。
List list = Arrays.asList("mr", "owl", "ate", "my", "metal", "worm", "racecar", "mad", "am");
List palindromeList = new ArrayList();
//Detects if a string is a palindrome.
for (int i = 0; i < list.size(); i ++) {List palindromeList = new ArrayList();
int wordLength = list.get(i);
String leftSide = "";
String rightSide ="";
if (wordLength%2 == 1) { //If word has odd number of characters.
leftSide = list.get(i).subString(0,wordLength/2);
rightSide = list.get(i).subString((wordLength/2) + 1, wordLength);
} else { //If word has even number of characters.
leftSide = list.get(i).subString(0,(wordLength/2));
rightSide = list.get(i).subString((wordLength/2), wordLength);
}
String reversedLeftSide = new StringBuilder(leftSide).reverse().toString();
if (reversedLeftSide.equals(rightSide)) {
palindromeList.add(list.get(i));
}
}
String longestPalindrome = "";
//Searches for longest palindrome in the list of palindromes.
for (int i = 0; i < palindromeList.size(); i++) {
if (palindromeList.get(i).length() > longestPalindrome.length()) {
longestPalindrome = palindromeList.get(i);
}
}
System.out.println(longestPalindrome); //This should give you longest palindrome.
请记住,可能有十二种方法可以解决此问题,而我只是提出了一种解决方案。 该代码可能还包含1或2个小错误,因为尚未经过测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。