首先,你可以问面试官,构成字符串的字符集有多大?是ASCII字符,还是只是26个字母? 还是有更大的字符集,对于不同的情况,我们可能会有不同的解决方案。如果我们假设字符集是ASCII字符,那么我们可以开一个大小为256的bool数组来表征每个字 符的出现。数组初始化为false,遍历一遍字符串中的字符,当bool数组对应位置的值为真, 表明该字符在之前已经出现过, 即可得出该字符串中有重复字符。否则将该位置的bool数组 值置为true。代码如下:
package interview;
/**
*
* @author Administrator
*
*/
public class IsUnique {
public static void main(String[] args) {
String s = "dfh";
if(isUnique(s))
System.out.println("no repeat");
else
System.out.println("repeat");
}
private static boolean isUnique(String s) {
// TODO Auto-generated method stub
boolean[] char_set = new boolean[256];
for(int i=0;i<s.length();i++)
{
int val = s.charAt(i);
if(char_set[val])
return false;
char_set[val] = true;
}
return true;
}
}