废话不多说了 , 直接给大家贴代码了 , 具体代码如下所述:
pacote com.gdh.backText; importar java.util.hashmap; importar java.util.map; importar java.util.map.entry; public class BackText {string text; public backText () {super (); this.Text = null;} public backText (text string) {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; }} retornar true;} mapa público <caractere, número inteiro> countString () {map <caractere, número inteiro> map = new hashmap <> (); int conting = 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 (); para (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); contagem = 0; }} // 循环打印 para (entrada <caractere, número inteiro> item: map.entrySet ()) {System.out.println ("字符:" + item.getKey () + "值:" + item.getValue ()); } mapa de retorno; } public string convert () {int checksum = 0; int itemCount = 0; Mapa <caractere, número inteiro> map = countString (); para (entrada <personagem, número inteiro> item: map.entrySet ()) {checksum+= item.getValue (); if (item.getValue () %2! = 0) itemCount ++; } if (itemCount> 1) {System.out.println ("该字符串不能转换为回文字"); retornar nulo; } Stringbuffer temp = new stringbuffer (text); // 线程安全 // stringbuilder temp = new stringbuilder (); // 线程非安全 int begidx = 0; int endIdx = verificação-1; Chave de caractere = nulo; bandeira booleana = false; para (entrada <personagem, número inteiro> item: map.entrySet ()) {if (verificação % 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 (); bandeira = true; continuar; }}} if (flag) {for (int i = 0; i <pap.get (key); i ++) {temp.setcharat (Begidx ++, chave); }} retornar 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 版本) , 希望对大家有所帮助 , 如果大家有任何疑问欢迎给我留言 , 小编会及时回复大家的!