算法 - 判断所有字符(ASCII)全不相同(Java)

判断所有字符全不相同(Java)

本文地址: http://blog.csdn.net/caroline_wendy

ASCII码共有256位,字符异同判断,使用位操作即可解决(11行),位操作还可以排序非重复数字数组(11行).

位是一个二值的存储单元,直接进行操作,用于判断重复和非重复排序,节省时间和空间,可以使用bool数组代替其功能.

代码:

/**
 * created by C.L.Wang
 */

public class Main {

    public static void main(String[] args) {
        String str = "god+byte";
        System.out.println("是否唯一: " + isUniqueChars(str));
        int[] arr = {4, 5, 1, 6, 3, 2};
        sort(arr);
        System.out.print("排序数组: ");
        for (int i : arr) {
            System.out.print(i + " ");
        }
    }

    /**
     * 判断字符串中的字符是否唯一
     *
     * @param str 字符串
     * @return 是否唯一
     */
    public static boolean isUniqueChars(String str) {
        if (str.length() > 256) return false;
        boolean[] bs = new boolean[256];
        for (int i = 0; i < str.length(); ++i) {
            int val = str.charAt(i);
            if (bs[val])
                return false;
            bs[val] = true;
        }
        return true;
    }

    /**
     * 位排序(无重复数组)
     *
     * @param arr 待排序数组
     */
    public static void sort(int[] arr) {
        final int MAX = 256;
        boolean[] bs = new boolean[MAX];
        for (int i : arr)
            bs[i] = true;
        int n = 0;
        for (int i = 0; i < MAX; ++i) {
            if (bs[i])
                arr[n++] = i;
        }
    }
}

输出:

是否唯一: true
排序数组: 1 2 3 4 5 6 
时间: 2024-11-13 11:38:57

算法 - 判断所有字符(ASCII)全不相同(Java)的相关文章

24_Shell语言————if条件判断之字符测试

前文中介绍过,bash的条件测试主要有以下3类: 整数测试:比较两个整数谁大谁小,是否相等: 字符测试:比较两个字符串是否相等: 文件测试:测试某个文件是否具有读权限.写权限.执行权限等: 整数测试在前文中介绍过,这里着重讲解字符测试.字符测试采用的比较符号是常用的数学符号: >:大于(在ASCII码表中的先后顺序,从左至右逐字比较) <:小于 ==:等于(注意,= 表示赋值) =~:判断左边的字符串是否能够被右边的模式所匹配,通常用于双中括号中: [[ $opt1=~$opt2 ]] 通常做

C#中如何判断一个字符是汉字

判断一个字符是不是汉字通常有三种方法,第一种用 ASCII 码判断,第二种用汉字的 UNICODE 编码范围判 断,第三种用正则表达式判断,以下是具体方法. 1.用ASCII码判断 在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下: string text = "是不是汉字,ABC"; for (int i = 0; i < text.Length; i++) { if ((int)text[i] > 127) Console.WriteLi

算法--判断数组中是否有重复值

判断数组中是否有重复值 第14节 重复值判断练习题 请设计一个高效算法,判断数组中是否有重复值.必须保证额外空间复杂度为O(1). 给定一个int数组A及它的大小n,请返回它是否有重复值. 测试样例: [1,2,3,4,5,5,6],7 返回:true Java (javac 1.7) 代码自动补全 1 import java.util.*; 2 3 public class Checker { 4 public boolean checkDuplicate(int[] a, int n) {

史上最全的随机数生成java算法

原文:史上最全的随机数生成java算法 源代码下载地址:http://www.zuidaima.com/share/1585762703215616.htm 前段时间有其他牛人分享的随机数激起了我分享随机数的想法 java随机字符补充版 [maven+junit] java生成指定为位数的随机密码 我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法: 1 String password = RandomUtil.generateString(10); 源码如下: pack

C# 之 判断一个字符是否是汉字

判断一个字符是不是汉字通常有三种方法: [1] 用 ASCII 码判断:[2] 用汉字的 UNICODE 编码范围判断:[3] 用正则表达式判断. 1.用ASCII码判断 在 ASCII码表中,英文的范围是0-127,而汉字则是大于127,具体代码如下: string text = "汉字,ABC"; for (int i = 0; i < text.Length; i++) { if ((int)text[i] > 127) Console.WriteLine("

判断中文字符的八种方法C#

软件开发技术交流,同学习共进步,欢迎加群, 群号:169600532  前段时间看见一些判断中文字符的方法,特整理出来,供以后用时方便 方法一 在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs. 通过对字符的unicode编码进行判断来确定字符是否为中文. protected bool IsChineseLetter(string input,int index) { int code = 0; int chfrom = Convert

编程算法 - 判断二叉树是不是平衡树 代码(C)

判断二叉树是不平衡树 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一颗二叉树的根结点, 判断该树是不是平衡二叉树. 二叉平衡树: 任意结点的左右子树的深度相差不超过1. 使用后序遍历的方式, 并且保存左右子树的深度, 进行比较. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <std

判断一个字符的性质

package day03; /** *关系运算 * * */ public class Demo11 { public static void main(String[] args) { int age = 15; boolean  isChild = age<16; System.out.println(isChild);//true //业务功能:判断一个字符是否为数字字符 char c = '6';//54  'A'65 '中'20013 // 54>=48 && 54

java小练习:输入一个字符,判断该字符是数字?英文字母?还是其他字符

package practiceGO; import java.util.Scanner; /*  * 3.输入一个字符,判断该字符是数字?英文字母?还是其他字符  */ public class Cto { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("输入一个字符:"); char ch = sc.next().charAt(0);