博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Cracking the coding interview--Q1.1
阅读量:6300 次
发布时间:2019-06-22

本文共 1511 字,大约阅读时间需要 5 分钟。

原文:

Implement an algorithm to determine if a string has all unique characters. What if you can not use additional data structures?

译文:

实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)

解答:

假设题目中提到的字符是包含在ASCII中的字符的话,那么最多是256个。所以可以用一个256长的数组来标记,或者用一个8个32位的int值来标记。

如果题目中没有规定只使用基本的数据结构的话,用BitSet来做也很方便的。

public class Main {    public static boolean isUnique1(String str) {        boolean [] flag = new boolean[256];        for(int i = 0; i < 256; i++) {            flag[i] = false;        }        int len = str.length();        for(int i = 0; i < len; i++) {            int index = (int)str.charAt(i);            if(flag[index])                return false;            flag[index] = true;        }        return true;    }        public static boolean isUnique2(String str) {        int [] flag = new int[8];        int len = str.length();        for(int i = 0; i < len; i++) {            int v = (int)str.charAt(i);            int index= v/32;            int offset = v%32;            if((flag[index] & (1 << offset)) == 1)                return false;            flag[index] |= (1 << offset);        }        return true;    }        public static void main(String args[]) {        String s1 = "i am hawstein.";        String s2 = "abcdefghijklmnopqrstuvwxyzABCD1234567890";        System.out.println(isUnique1(s1) + " " + isUnique1(s2));        System.out.println(isUnique2(s1) + " " + isUnique2(s2));    }}

 

posted on
2013-07-12 11:09 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/giraffe/p/3185911.html

你可能感兴趣的文章
Exchange 2010 集线器传输相关知识
查看>>
DVWA系列之21 存储型XSS分析与利用
查看>>
Go基础之--位操作中你所不知道的用法
查看>>
解决zabbix的zabbix_get获取客户端数据爆“standard in must be a tty”
查看>>
Python回顾与整理1:Python基础
查看>>
微软PDC2008西游记(3)我拿到windows7光盘了
查看>>
error LNK2005: _DllMain@12 already defined in MSVCRTD.lib
查看>>
blog推荐 - 软件产品管理之Tyner Blain
查看>>
[图示]做人36字诀:三)自我提升,教你拯救命运
查看>>
MDSF:Eclipse MDD Day学习
查看>>
.net精简框架集多个类同时串行化(XML方式)技术
查看>>
Docker技术这些应用场景,你知道吗?
查看>>
关于使用Android NDK编译ffmpeg
查看>>
研发中版本管理的规范性
查看>>
玩转“网上邻居”之DNS解析(二)
查看>>
Windows Phone 7 不温不火学习之《创建用户控件》
查看>>
C#中的 int?是什么意思
查看>>
编程思维随想
查看>>
微信小程序+java后端整合笔记
查看>>
Java应用程序工程模板
查看>>