Java版本的回文字算法(java版本)
程序员文章站
2024-03-13 11:05:39
废话不多说了,直接给大家贴代码了,具体代码如下所述:
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版本),希望对大家有所帮助