几道关于面试的题目
实现一个算法,确定一个字符串的所有字符是否全部相同?
最想想到的方法是通过比较该字符串的每一个字符,算法的时间复杂度为0(n2)次。
另一种办法是可以利用set数据结构来实现,因为在set中不允许存在重复的字符。有一个有意思的地方是在进行判断前可以先判断字符串的长度,如果字符串的长度大于256,那么我们可以肯定该字符串中肯定有重复的字符。
Python代码实现如下:
a = "11fdwqdgf5hg56gfwdqwsdqwd";
#采用set的方法
def judge():
t = set(a);
N = len(a);
if(t == N):
return ('TRUE');
else:
print(t);
return ('FALSE');
#比较字符串中的每一个字符
def judge2():
N = len(a);
for i in range(N):
s = a[i];
for j in range(i,N,1):
if(s == a[j]):
return ('FALSE');
return "true"
if __name__ == "__main__":
print(judge());
print(judge2());
C++代码:
bool judge(const string str){
vector<bool> char_set(256,false);
for (int i = 0;i<str.length();i++){
int val = str[i];
cout<<"val:"<<char_set[val]<<endl;
if(char_set[val]){
return false;
}else{
char_set[val] = true;
}
}
return true;
}
Java代码:
public boolean judge(final String str){
if (str.length() > 256){
return false;
}else{
boolean[] char_set = new boolean[256];
for (int i= 0;i<str.length();i++){
int val = str.charAt(i);
if (char_set[val]){
return false;
}
char_set[val] = true;
}
}
return true;
}
浙公网安备 33010602011771号