您的位置:首页 > 其它

nyoj37 回文字符串

2013-06-06 21:49 351 查看
把字符串反转,然后用反串和原串求最大公共子序列(LCS),再用字符串长度减去LCS的长度就是答案。

写的有点废,不过方便以后直接调用。

import java.util.Scanner;
public class Main 
{
	static int lcs(String str1,String str2)
	{
		int len1=str1.length();
		int len2=str2.length();
		int lc[][]=new int[len1+1][len2+1];
		for(int i=1;i<=len1;i++)
		{
			for(int j=1;j<=len2;j++)
			{
				if(str1.charAt(i-1)==str2.charAt(j-1))
				{
					lc[i][j]=lc[i-1][j-1]+1;
				}
				else 
				{
					lc[i][j]=Math.max(lc[i-1][j], lc[i][j-1]);
				}
			}
		}
		return lc[len1][len2];
	}
	public static void main(String[] args)
	{
		Scanner cin=new Scanner(System.in);
		int N=cin.nextInt();
		while(N--!=0)
		{
			String str1=cin.next();
			String str2=new StringBuffer(str1).reverse().toString();
			System.out.println(str1.length()-lcs(str1,str2));
		}
	}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: