判断字符数组中是否所有的字符都出现一次
来源:互联网 发布:日式风衣知乎 编辑:程序博客网 时间:2024/06/14 03:50
/** * Created by lxw, liwei4939@126.com on 2017/10/31. * 判断字符数组中是否所有的字符都出现一次 * 实现时间复杂度为O(N)的方法 * 在保证空间复杂度为O(1)的前提下,时间复杂度尽可能低 */public class stringIsUnique { public boolean isUnique1(char[] arr){ if(arr == null){ return true; } boolean[] map = new boolean[256]; for (int i=0; i< arr.length; i++){ if(map[arr[i]]){ return false; } map[arr[i]] = true; } return true; } public boolean isUnique2(char[] arr){ if(arr == null){ return true; } heapSort(arr); for (int i=1; i< arr.length; i++){ if(arr[i] == arr[i-1]){ return false; } } return true; } public void heapSort(char[] arr){ for (int i=0; i< arr.length; i++){ heapInsert(arr, i); } for (int i=arr.length -1; i>0; i--){ swap(arr, 0, i); heapify(arr, 0, i); } } public void heapify(char[] arr, int i, int size){ int left = 2*i + 1; int right = 2*i +2; int largest = i; while (left < size){ if(arr[left] > arr[i]){ largest = left; } if(right < size && arr[right] > arr[largest]){ largest = right; } if(largest != i){ swap(arr, largest, i); } else { break; } i = largest; left = 2*i + 1; right = 2*i + 2; } } public void heapInsert(char[] arr, int i){ int parent =0; while (i != 0){ parent = (i-1)/2; if(arr[parent] < arr[i]){ swap(arr, parent, i); i = parent; } else { break; } } } public void swap(char[] arr, int index1, int index2){ char tmp = arr[index1]; arr[index1] = arr[index2]; arr[index2] = tmp; } public static void main(String[] args){ stringIsUnique tmp = new stringIsUnique(); char[] arr = new char[]{'a', 'b', 'a'}; System.out.println(tmp.isUnique2(arr)); }}
阅读全文
0 0
- 判断字符数组中是否所有的字符都出现一次
- 判断字符数组中是否所有的字符都只出现过一次 Python 版
- 字符串问题---判断字符数组中是否所有的字符只出现了一次
- 字符串之字符数组种是否所有的字符都只出现过一次
- 判断字符数组中是否所有的字符只出现了一次(左程云)非递归堆排序实现
- 判断字符是否出现一次
- 数组中只出现一次的字符
- 判断字符串的字符是否只出现一次
- 判断一个字符串的所有字符是否都在另一个字符串中
- 算法--判断字符数组中是否有相等的字符
- 找出数组中第一个只出现一次的字符
- 剑指offer 40---数组中只出现一次的字符
- 数组中第一个出现一次的字符
- 判断字符是否出现
- 判断字符是否出现
- 判断串中每种字符是否只出现一次,时间复杂度O(N)
- Perl 判断一个字符串中所有字符是否在另外一个字符串中出现
- 判断短字符串中的所有字符是否在长字符串中全部出现
- 我开通了博客
- 错题2求偶数和
- android购物车简单实现全选+加减器+总价格
- Hbase集群安装与常见问题解决
- Codevs2491玉蟾宫
- 判断字符数组中是否所有的字符都出现一次
- 多线程系列汇总
- MyEclipse 修改字体大小
- The Elements of Computing Systems阅读笔记(1)
- OpenCV中的绘图函数
- 栈帧详解
- TI逻辑驱动器类族注释
- PAT考试乙级1012(C语言实现)
- 洛谷P1332 血色先锋队(emmm一个词语概括:脑洞很大)