java输出字符串中所有的回文_java - 从Java中的字符串列表跟踪回文 - 堆栈内存溢出...

为了检测字符串是否是回文,我将字符串分成两半,将字符串反转,看看双方是否相等。

有两种情况:

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个小错误,因为尚未经过测试。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值