欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-03-12 14:49:02
废话不多说了,直接给大家贴代码了,具体代码如下所述: package com.gdh.backtext; import java.util.hashmap;...

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

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版本),希望对大家有所帮助