繁体转简体java_在java中,怎么把繁体字转化为简体字
展开全部
实现思路⼀:采⽤字符串的⽅式实e68a84e8a2ad3231313335323631343130323136353331333363373164现
[java] view plain copy
package verter;
import java.util.Scanner;
/**
* 思路⼀:采⽤字符串的⽅式实现
*/
public class JianFanConvert1 {
public static final String jianti = "万与丑专业丛东丝";
public static final String fanti = "万与丑专业丛东丝";
蛇果和苹果有什么区别public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输⼊你想转换的句⼦");
String words = ();
for (int i = 0; i
char tempChar = words.charAt(i);
int position = jianti.indexOf(tempChar);//此⽅法调⽤时间复杂度为O(n)
char fantiChar;
if (position == -1) {
fantiChar = tempChar;
五月十四号是什么节日} else {
fantiChar = fanti.charAt(position);
}
降脂System.out.print(fantiChar);
}
}
}金星为何瞧不上郭敬明
分析上述实现,时间复杂度为O(n*n),当问题规模扩⼤时会⾮常耗时。
实现思路⼆:采⽤哈希算法实现
1.哈希⽅法
哈希⽅法在就是在键和值之间建⽴⼀个确定的对应函数关系hash(),就是key向value的换算关系,使
得每⼀个键与结构中的⼀个唯⼀的存储位置相对应:值的存储位置=hash(键)即Value的位置=hash(key)
例如有⼀组“键值对”:<5,”tom”>、<8,”Jane”>、<12,”Bit”>、<17,”Lily”>、<20,”sunny”>,我们按照如下哈希函数对键进⾏计算:hash(x)=x%17+3,得出如下结果:hash(5)=8、hash(8)=11、hash(12)=15、hash(17)=3、hash(20)=6。
我们把<5,”tom”>、<8,”Jane”>、<12,”Bit”>、<17,”Lily”>、<20,”sunny”>分别放到地址为8、11、15、3、6的位置上。当要检索17对应的值的时候,只要⾸先计算17的哈希值为3,然后到地址为3的地⽅去取数据就可以到17对应的数据是“Lily”了。
使⽤哈希⽅法,查询的时间复杂度为O(1),能够直接定位其位置,⼤⼤加快数据的查询速度。
2.哈希表
将数据采⽤哈希算法进⾏保存的数据结构就是哈希表,常见操作put、get、remove。
Java中的HashMap使⽤(Java内置的哈希表数据结构)
HashMap的主要⽅法
int size():得到Map中“键-值对”的数量
boolean isEmpty():Map是否是空的,也就是是否不含有任何“键-值对”
word文档
boolean containsKey(Object key):Map中是否含有以key为键的“键-值对”
boolean containsValue(Object value):Map中是否含有以value为值的“键-值对”
Object get(Object key):从Map中得到以key为键的值,如果Map中不含有以key为键的“键-值对”则返回null
Object put(Object key, Object value):向Map中存储以key为键、value为值的“键-值对”
Object remove(Object key):从Map中移除以key为键的“键-值对”
void clear():清除所有“键-值对”
Set keySet():得到所有的键
Collection values():得到所有的值
Set entrySet():得到所有的“键-值对”,Set中的类型是Map.Entry
[java] view plain copy
package verter;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
/**
* 思路⼆:采⽤哈希算法实现
*/
public class JianFanConvert2 {
public static final String jianti = "万与丑专业丛东丝";
public static final String fanti = "万与丑专业丛东丝";
public static void main(String[] args) {300字摘抄
Map map=new HashMap();
for(int i=0;i
map.put(jianti.charAt(i),fanti.charAt(i));
}
Scanner input = new Scanner(System.in);
System.out.println("请输⼊你想转换的句⼦");
String words = ();
/**
* 为了测试随着问题规模的扩⼤⽤时
*/
for(int i=0;i<10;i++){
words=words+words;
}
long begin=System.currentTimeMillis();
for (int i = 0; i
char tempChar = words.charAt(i);
Character (tempChar);
char fantiChar;
if (character == null) {
fantiChar = tempChar;
} else{
fantiChar=character;
}
System.out.print(fantiChar);
}
long end=System.currentTimeMillis();
System.out.println("\n⽤时:"+(end-begin));
}
}
分析上述算法实现,时间复杂度变为o(n)
问题探讨:
为什么算法复杂度由O(n*n)变成O(n),但是实际执⾏时间没有明显的变化?
print,数据在CPU、内存中运算都⾮常快,⼀旦与外设(打印机、⽹络(⽹卡)、显⽰设备(显卡))交换数据,速度就会慢很多来⾃
junjunguoguo的专栏