Java控制台输入长度大于0的一段字符串,打印最少删除几个字符实现回文

package Pattern;


import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
 * 控制台输入长度大于0的一段字符串,打印最少删除几个字符实现回文
 * @author Youjc
 *
 */
public class IfHuiWen {


public IfHuiWen() {


@SuppressWarnings("resource")
Scanner sc = new Scanner(System.in);

while(sc.hasNext()){
int minnum = PanDuanHuiWen(sc.nextLine());
System.out.println(minnum);
        }

}


private int PanDuanHuiWen(String value) {
int min = 0;
byte[] byteval = value.getBytes();
List<String> xiabiao = new ArrayList<String>();
for (int k = 0; k < byteval.length; k++) {
for (int m = k + 1; m < byteval.length; m++) {
if (byteval[k] == byteval[m]) {
xiabiao.add(k + "-" + m);


}
}
}
// System.out.println(xiabiao);
List<Integer> minlist = new ArrayList<Integer>();
for (int b = 0; b < xiabiao.size(); b++) {
String firsttoend = xiabiao.get(b);
int first = Integer.valueOf(firsttoend.substring(0, firsttoend.indexOf("-")));
int end = Integer.valueOf(firsttoend.substring(firsttoend.indexOf("-") + 1, firsttoend.length()));
String newvalue = value.substring(first, end + 1);
min = value.length() - newvalue.length();
int flag = 0;
// System.out.println("初始newvalue="+newvalue);
for (int t = 0; t < newvalue.length() / 2; t++) {
if (newvalue.charAt(t) == newvalue.charAt(newvalue.length() - t - 1)) {


} else {
if(newvalue.length() % 2==0)
{
flag++;
flag++;
}else
{
flag++;
flag++;
flag++;
}
}
}
if(flag>0)
{
min =min+(flag-1);
}

minlist.add(min);
}

int minimin =minlist.get(0);
for(int k=0;k<minlist.size();k++)
{
if(minimin>minlist.get(k))
{
minimin = minlist.get(k);
}


}


return minimin;
}


public static void main(String[] args) {
new IfHuiWen();
}


}

猜你喜欢

转载自blog.csdn.net/youjianchi/article/details/79367392