题目:
给定一个字符类型的数组chas[],判断chas中是否所有的字符都只出现过一次,请根据以下两种要求实现函数。
- 时间复杂度为O(N)。
- 额外空间复杂度为O(1)。
思路:
遍历字符串时,每遍历一个字符的时候创建一个新的字符串使用replace函数将遍历到的字符替换为空字符在赋值给新建的字符。将原先的字符长度与新建的字符长度做减法,一旦大于或等于2则判断原字符中存在重复的字符。
代码:
/**
* 判断字符串中的各个字符是否只出现一次
*/
public boolean oneCharacter(String str){
for(int i=0;i<str.length();i++){
String ind = str;
ind = ind.replace(String.valueOf(str.charAt(i)), "");
int n = str.length() - ind.length();
if(n >= 2){
return false;
}
}
return true;
}