实现一个算法确定字符串中的字符是否均唯一出现
样例
给出"abc"
,返回 true
给出"aab"
,返回 false
挑战
如果不使用额外的存储空间,你的算法该如何改变?
最开始想到的就是不使用额外存储空间但是时间复杂度为O(n^2)的两个循环判断,然后就在想有没使用额外空间的但是时间复杂度为O(n)的算法,至少也是要遍历一次的吧。然后在这里看到了使用的方法,思路大概是(如果对于26个小写字母的输入来讲,对于非26位小写字母的输入来讲就按输入的编码格式选择例如ASCII码百度搜到的似乎是256位)使用一个26位数的数组,对输入的字符串按照字母顺序按照在字母表中的第几个来在数组相应的下标位加一,最后遍历这个数组,看看有没有大于一的,有则是有重复。
public class Solution {
/**
* @param str: a string
* @return: a boolean
*/
public boolean isUnique(String str) {
// write your code here
for(int i = 0 ; i < str.length() ; i++){
for(int j = i + 1 ; j < str.length(); j++){
if(str.charAt(i) == str.charAt(j)){
return false;
}
}
}
return true;
}
}