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!");
}
}
}
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!");
}
}
}
相关文章推荐
- Cracking the coding interview--Q1.1
- Cracking The Coding Interview--Q1.1
- Cracking the coding interview--Q1.1
- Cracking the coding interview--Q1.1
- Cracking the coding interview--Q1.1
- Cracking the coding interview--Q1.1
- Cracking the coding interview--Q1.1
- 《Cracking the Coding Interview》——第18章:难题——题目12
- Cracking the Coding Interview(linked list)
- 二维数组中的查找 Cracking the coding interview 9.6
- Cracking the coding interview--Q8.7
- Cracking the coding interview--Q3.2
- Cracking the coding interview--Q4.6
- Cracking the coding interview--问题与解答
- 《Cracking the coding interview》
- Cracking the coding interview--Q8.8
- Cracking the coding interview--Q1.6
- Cracking the coding interview--Q1.4
- 《Cracking the Coding Interview》——第2章:链表——题目3
- 《Cracking the Coding Interview》——第5章:位操作——题目4