您的位置:首页 > 其它

Cracking the coding interview--Q1.1

2014-10-19 21:32 309 查看
原文:

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

译文:

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

package chapter_1_arraysandstring;

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

/**
* 通过bool数组存储标志
*
* @param str
* @return
*/
public boolean isUnique(String str) {
boolean[] flag = new boolean[26];
for (int i = 0; i < 26; i++) {
flag[i] = false;
}

int len = str.length();
for (int i = 0; i < len; i++) {
int j = str.charAt(i) - 'a';
if (flag[j]) {
return false;
} else {
flag[j] = true;
}
}
return true;
}

/**
* 通过int 4个字节 位运算 减少存储空间
*
* @param str
* @return
*/
public boolean isUnique2(String str) {
int map = 0; // 00000000 00000000 00000000 00000000
int len = str.length();
for (int i = 0; i < len; i++) {
int j = str.charAt(i) - 'a';
if ((map & (1 << j)) != 0) {
return false;
} else {
map |= (1 << j);
}
}
return true;
}

public static void main(String args[]) {
Question_1_1 question = new Question_1_1();
String str = "abcdefghijklmnopqrstuvwxyz";
if (question.isUnique(str)) {
System.out.println("Unique!");
} else {
System.out.println("Not Unique!");
}

if (question.isUnique2(str)) {
System.out.println("Unique!");
} else {
System.out.println("Not Unique!");
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  算法