判断字符串有无重复字符(ASCII码和Unicode的区别)

来自cc150

分析:

 ASCII码和Unicode的区别

1.ASCII的特点

     ASCII 是用来表示英文字符的一种编码规范。每个ASCII字符占用1 个字节,因此,ASCII 编码可以表示的最大字符数是255(00H—FFH)。这对于英文而言,是没有问题的,一般只什么用到前128个(00H--7FH,最高位为0)。而最高位为1 的另128 个字符(80H—FFH)被称为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其它符号。

     但是对于中文等比较复杂的语言,255个字符显然不够用。于是,各个国家纷纷制定了自己的文字编码规范,其中中文的文字编码规范叫做“GB2312—80”, 它是和ASCII 兼容的一种编码规范, 其实就是利用扩展ASCII没有真正标准化这一点,把一个中文字符用两个扩展ASCII 字符来表示,以区分ASCII 码部分。
     但是这个方法有问题,最大的问题就是中文的文字编码和扩展ASCII 码有重叠。而很多软件利用扩展ASCII 码的英文制表符来画表格,这样的软件用到中文系统中,这些表格就会被误认作中文字符,出现乱码。另外,由于各国和各地区都有自己的文字编码规则,它们互相冲突,这给各国和各地区交换信息带来了很大的麻烦。

2.UNICODE的产生

     要真正解决这个问题,不能从扩展ASCII 的角度入手,UNICODE作为一个全新的编码系统应运而生,它可以将中文、法文、德文……等等所有的文字统一起来考虑,为每一个文字都分配一个单独的编码。

3.什么是UNICODE

      Unicode与ASCII一样也是一种字符编码方法,它占用两个字节(0000H—FFFFH),容纳65536 个字符,这完全可以容纳全世界所有语言文字的编码。在Unicode 里,所有的字符都按一个字符来处理, 它们都有一个唯一的Unicode 码。

4.使用UNICODE的好处

      使用Unicode 编码可以使您的工程同时支持多种语言, 使您的工程国际化。即在不同语言的系统下不至于产生乱码。

提取要点:

        ASCII:一个字符(0 - 2^{8}

       Unicode:两个字符(0 - 2^{16}

ASCII解法:

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner sca = new Scanner(System.in);
		int a[] = new int[128];
		String str = sca.next();
		int n = str.length();
		for(int i = 0; i < n; i ++) {
			int x = (int)str.charAt(i);
			a[x] ++;
			if(a[x] > 1) {
				System.out.println("NO!");
				return;
			}
			
		}
		System.out.println("YES!");

	}

}

 输出:

frhyju
YES!

参考资料:

https://blog.csdn.net/lx697/article/details/5914417

猜你喜欢

转载自blog.csdn.net/qq_42794545/article/details/89421857
今日推荐