当前位置: 移动技术网 > IT编程>开发语言>Java > Java版本的回文字算法(java版本)

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

2019年07月22日  | 移动技术网IT编程  | 我要评论

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网