Java版本的回文字算法(java版本)
废话不多说了,直接给大家贴代码了,具体代码如下所述:
packagecom.gdh.backtext;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Map.Entry;
publicclassBackText{
Stringtext;
publicBackText(){
super();
this.text=null;
}
publicBackText(Stringtext){
super();
this.text=text;
}
publicbooleanisBackText(){
for(inti=0,j=text.length()-i-1;i<=j;i++,j--){
if(text.charAt(i)!=text.charAt(j)){
returnfalse;
}
}
returntrue;
}
publicMap<Character,Integer>countString(){
Map<Character,Integer>map=newHashMap<>();
intcount=0;
Stringtemp=newString();
for(inti=0;i<text.length();i++){
if(temp.indexOf(text.charAt(i),0)<0){
temp+=text.charAt(i);
}
}
map.clear();
for(inti=0;i<temp.length();i++){
if(!map.containsKey(temp.charAt(i))){
for(intj=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());
}
returnmap;
}
publicStringconvert(){
intchecksum=0;
intitemcount=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("该字符串不能转换为回文字");
returnnull;
}
StringBuffertemp=newStringBuffer(text);//线程安全
//StringBuildertemp=newStringBuilder();//线程非安全
intbegIdx=0;
intendIdx=checksum-1;
Characterkey=null;
booleanflag=false;
for(Entry<Character,Integer>item:map.entrySet()){
if(checksum%2==0){
for(inti=0;i<item.getValue()/2;i++){
temp.setCharAt(begIdx++,item.getKey());
temp.setCharAt(endIdx--,item.getKey());
}
}else{
if(item.getValue()%2==0){
for(inti=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(inti=0;i<map.get(key);i++){
temp.setCharAt(begIdx++,key);
}
}
returntemp.toString();
}
publicstaticvoidmain(String[]args){
BackTextbt=newBackText("1122334455667788990");
if(!bt.isBackText())
System.out.println("该字符串不是回文字");
else
System.out.println("该字符串是回文字");
Stringdest=newString();
System.out.println("开始转换...");
dest=bt.convert();
System.out.print("转换后的结果为:");
System.out.println(dest);
}
}
以上所述是小编给大家介绍的Java版本的回文字算法(java版本),希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!