国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

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

2019-11-26 13:45:38
字體:
來源:轉載
供稿:網友

廢話不多說了,直接給大家貼代碼了,具體代碼如下所述:

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版本),希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 青川县| 大石桥市| 天镇县| 双江| 恭城| 临潭县| 基隆市| 永宁县| 永春县| 玉田县| 武义县| 开封市| 南溪县| 镇远县| 开远市| 枣阳市| 固镇县| 双城市| 南开区| 富锦市| 呼伦贝尔市| 安福县| 武宁县| 乌鲁木齐县| 台前县| 磐石市| 威海市| 昌图县| 正阳县| 福安市| 从江县| 清远市| 雅江县| 平乐县| 永兴县| 乌兰察布市| 贵州省| 张家港市| 泊头市| 漳平市| 邵东县|