1、回文字符串介绍
回文字符串是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文字符串。
参考百度。
2、算法思路
(1)以二分之一的位置为基准,依次比较两边对应的字符;
(2)字符串倒置后直接比较。
3、具体代码
package com.peter.algorithm.other;
import org.junit.Test;
import java.util.*;
public class PalindromeString {
@Test
public void test() {
String origin1 = "hellolleh";
String origin2 = "helloworld";
String result1 = isPalindromicStringByCompare(origin1) ? " is a " : " is not a ";
System.out.println(origin1 + result1 + "palindrome string.");
String result2 = isPalindromicStringByReverse(origin2) ? " is a " : " is not a ";
System.out.println(origin1 + result2 + "palindrome string.");
}
public static boolean isPalindromicStringByCompare(String origin) {
if (origin == null || origin.isEmpty()) {
return false;
}
boolean result = true;
char[] chars = origin.toCharArray();
int len = chars.length;
int middle = len / 2;
for (int i = 0; i < middle; i++) {
if (chars[i] != chars[len - i - 1]) {
result = false;
break;
}
}
return result;
}
public static boolean isPalindromicStringByReverse(String origin) {
if (origin == null || origin.isEmpty()) {
return false;
}
StringBuilder stringBuilder = new StringBuilder(origin);
String tempStr = stringBuilder.reverse().toString();
return origin.equals(tempStr) ? true : false;
}
}
4、测试结果
origin string | target |
---|---|
hellolleh | true |
helloworld | false |