今天看到一个回文串的问题:
给定一个字符串,能否通过添加一个字母将其变成“回文串”,“回文串”是指正着和反着读都一样的字符串。如: “aa”, “aba” , ”abcba“等。“abcd”, “abce”就不是。
网上可能有一些数学技巧的快速解法,但是我这里想利用程序的穷举办法实现。
思路:
1)先判断给定的字符串是否回文串,如果是就不需要构造
2)如果不是回文串,就尝试添加一个字符构造一个新字符串
3)然后再判断新构造的字符串是否回文串
因为构成回文串的字符必定是从原来的字符串抽取一个出来构造的,所以可以让程序去穷举2)的情况。
例如 abc,要构成回文串,构造字符必定是a或b或c, 尝试组合成:
“Aabc”, “aAbc”, “abAc”,“abcA”;
“Babc”, “aBbc”, “abBc”,“abcB”;
“Cabc”, “aCbc”, “abCc”,“abcC”;
另外,如果是回文串,必定成对称分布。
实现程序如下:
public class Aglorith{
public s