原题描述
实现一个算法,确定一个字符串中的所有字符是否全部不同。假设不允许使用额外的数据结构,如何处理
算法
-
方案一:使用排序,时间复杂度O(nlogn),但是很多排序算法需要额外空间
-
方案二:
-
询问是否使用ASCII字符集,还是Unicode字符集,若使用ASCII字符集,则可以采用数组来代替hash表
-
Algo:
1. 判断字符串长度,如果大于256,则一定存在重复,则退出 2. 定义hash数组[256] 3. 遍历字符串位置 i : 取出 i处字符 判断 hash数组中是否出现过该字符,若出现过,则存在重复,退出 将hash数组中该字符 置位
-
C++代码
方案二代码如下:
bool isUniqueChars(string word) {
if (word.length() > 256) {
return false;
}
bool table[256];
for (int i = 0; i < word.length(); i++) {
if (table[word[i]]) {
return false;
}
table[word[i]] = true;
}
return true;
}
Bug Free Procedure 从记事本直接写代码
- 2017.01.13 Bingo!!!一次性AC
- 2017.01.15 Bingo!!!一次性AC
- 2017.01.16 Bingo!!!一次性AC