判断一个字符串是否能够通过n次交换得到一个回文串,如果可以计算出交换次数

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【chenshouyu】截止到2008-07-02 14:20:35的历史汇总数据(不包括此帖):
    发帖的总数量:0                        发帖的总分数:0                        
    结贴的总数量:0                        结贴的总分数:0                        
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:---------------------结分的百分比:---------------------
    无满意结贴率:---------------------无满意结分率:---------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    交换
    string.length()/2
      

  3.   

    问题补充:
    比如说所给的字符串为:mamad,第一次交换ad,得mamda;第二次交换md,得madma;第三次交换ma,得madam。(回文串,交换成功,交换次数为3)
    最好用java语言写,或者说说思路也行
    我的思路是:
    1   判断字符串个数,分奇偶做不同的操作2   对于偶数个:判断每一个字符出现的次数,如果存在   (出现次数)%2!=0  则无法转换成回文串
    2.1 获取第一个字符值,并找出字符串中最后出现同一字符的位置i,移动次数=字符串的长度-1-i;
    2.2 去掉这两个字符得到新的字符串,然后进行同样操作,得出结果(这里有个问题,不懂怎样去掉这两个字符)3   对于奇数个:判断每一个字符出现的次数,如果存在   (出现次数)%2!=1  则无法转换成回文串
    3.1 获取第一个字符值,并找出字符串中最后出现同一字符的位置i
    3.2 如果存在,则移动次数=字符串的长度-1-i,去掉 这两个字符得到新的字符串,然后进行同样操作,得出结果
    3.3 如果不存在,则移动次数=(字符串的长度-1)/2,去掉这一个字符得到新的字符串,然后进行同样操作,得出结果