Java版本的回文字算法(java版本)
廢話不多說了,直接給大家貼代碼了,具體代碼如下所述:
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;
}
}
//循環(huán)打印
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("該字符串不能轉(zhuǎn)換為回文字");
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("開始轉(zhuǎn)換...");
dest=bt.convert( ) ;
System.out.print("轉(zhuǎn)換后的結(jié)果為:");
System.out.println(dest);
}
}
以上所述是小編給大家介紹的Java版本的回文字算法(java版本),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!
- Java判斷字符串回文的代碼實(shí)例
- java 實(shí)現(xiàn)判斷回文數(shù)字的實(shí)例代碼
- Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼分享
- java計(jì)算任意位水仙花數(shù)示例(回文數(shù))
- java判斷回文數(shù)示例分享
- Java實(shí)現(xiàn)帶頭結(jié)點(diǎn)的單鏈表
- java實(shí)現(xiàn)單鏈表增刪改查的實(shí)例代碼詳解
- Java數(shù)據(jù)結(jié)構(gòu)之簡單鏈表的定義與實(shí)現(xiàn)方法示例
- Java實(shí)現(xiàn)單鏈表翻轉(zhuǎn)實(shí)例代碼
- java 實(shí)現(xiàn)單鏈表逆轉(zhuǎn)詳解及實(shí)例代碼
- Java實(shí)現(xiàn)單鏈表的各種操作
- 用JAVA實(shí)現(xiàn)單鏈表,檢測字符串是否是回文串
相關(guān)文章
springmvc圖片上傳及json數(shù)據(jù)轉(zhuǎn)換過程詳解
這篇文章主要介紹了springmvc圖片上傳及json數(shù)據(jù)轉(zhuǎn)換過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10
使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn)
這篇文章主要介紹了使用SpringSecurity設(shè)置角色和權(quán)限的注意點(diǎn),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
關(guān)于解決iReport4.1.1無法正常啟動或者閃退或者JDK8不兼容的問題
在安裝使用iReport的過程中遇到一個(gè)問題,我的iReport始終不能打開,困擾了我好久。接下來通過本文給大家介紹iReport4.1.1無法正常啟動或者閃退或者JDK8不兼容的問題,需要的朋友可以參考下2018-09-09
Java時(shí)區(qū)轉(zhuǎn)換實(shí)例代碼解析
這篇文章主要介紹了Java時(shí)區(qū)轉(zhuǎn)換實(shí)例代碼解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
Java數(shù)據(jù)機(jī)構(gòu)中關(guān)于并查集的詳解
并查集是一種樹型的數(shù)據(jù)結(jié)構(gòu),用于處理一些不相交集合的合并及查詢問題,如果你還不了解并查集,請看接下來的文章,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值2021-09-09
劍指Offer之Java算法習(xí)題精講數(shù)組與字符串題
跟著思路走,之后從簡單題入手,反復(fù)去看,做過之后可能會忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會發(fā)現(xiàn)質(zhì)的變化2022-03-03

