Java版本的回文字算法(java版本)

时间:2021-05-19

废话不多说了,直接给大家贴代码了,具体代码如下所述:

package com.gdh.backtext;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;public class BackText {String text;public BackText() {  super();  this.text = null;}public BackText(String text) {  super();  this.text = text;}public boolean isBackText(){   for(int i=0,j=text.length()-i-1;i<=j;i++,j--){    if( text.charAt(i) != text.charAt(j) ){      return false;    }  }  return true;}public Map<Character,Integer> countString(){  Map<Character,Integer> map=new HashMap<>();  int count=0;  String temp=new String();  for(int i=0;i< text.length();i++){    if ( temp.indexOf(text.charAt(i), 0) < 0){      temp+=text.charAt(i);    }  }  map.clear();  for(int i=0;i< temp.length();i++){    if(!map.containsKey(temp.charAt(i))){      for(int j=0;j< text.length();j++){         if(text.charAt(j) == temp.charAt(i) ){          count++;        }       }      map.put(temp.charAt(i), count);      count=0;    }   }  //循环打印   for(Entry<Character,Integer> item:map.entrySet()){    System.out.println("字符:" + item.getKey() + " 值:" + item.getValue());  }  return map; }public String convert(){  int checksum = 0;  int itemcount=0;  Map<Character,Integer> map=countString();  for(Entry<Character,Integer> item:map.entrySet()){  checksum+=item.getValue();  if( item.getValue() %2 != 0)    itemcount++;   }  if( itemcount > 1 ){    System.out.println("该字符串不能转换为回文字");    return null;  }  StringBuffer temp=new StringBuffer(text);//线程安全  //StringBuilder temp=new StringBuilder();//线程非安全  int begIdx=0;  int endIdx=checksum-1;  Character key=null;  boolean flag=false;  for(Entry<Character,Integer> item:map.entrySet()){  if( checksum % 2 ==0 ){  for(int i=0;i<item.getValue()/2;i++){    temp.setCharAt(begIdx++, item.getKey());    temp.setCharAt(endIdx--, item.getKey());  }     }else{      if(item.getValue()%2==0 ){        for(int i=0;i<item.getValue()/2;i++){          temp.setCharAt(begIdx++, item.getKey());          temp.setCharAt(endIdx--, item.getKey());        }       }else{        key=item.getKey();        flag=true;        continue;       }    }  }  if(flag)  {    for(int i=0;i<map.get(key);i++){      temp.setCharAt(begIdx++, key);    }  }  return temp.toString();}  public static void main(String[] args) {    BackText bt=new BackText("1122334455667788990");    if( !bt.isBackText() )      System.out.println("该字符串不是回文字");    else      System.out.println("该字符串是回文字");    String dest=new String();    System.out.println("开始转换...");    dest=bt.convert( ) ;    System.out.print("转换后的结果为:");    System.out.println(dest);  }}

以上所述是小编给大家介绍的Java版本的回文字算法(java版本),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章