我有一个清单,比方说
L = ['apple','bat','apple','car','pet','bat'].
我想把它转换成
Lnew = [ 1,2,1,3,4,2].
每个唯一字符串都与一个数字相关联.
我有一个java解决方案使用hashmap,但我不知道如何hashmap在python中使用.请帮忙.
给出logN每个大小的排序列表N*logN.将它们合并到单个排序列表所需的总时间是多少?
A) O(NlogN)
B) O(N)
C) O(NloglogN)
D) O(Nlog(N/logN))
Run Code Online (Sandbox Code Playgroud)
我尝试通过N = 4来解决它.但没有选择令人满意.
我正在使用位掩码生成字符串的所有排列。
void recurse(string s, int mask,int taken){
if(taken == n){
cout << " ";
return;
}
for(int i = 0; i < n; i++){
if(((1 << i) & mask) == 0){
cout << s[i];
recurse(s, (mask|(1 << i)), taken + 1);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在此函数中,n 是字符串的长度。我正在跟踪到目前为止使用变量打印了多少个字符。在我调用的主函数中
recurse(s,0,0);
Run Code Online (Sandbox Code Playgroud)
但这不能正常工作。用于输入
红色的
它的输出是
红鹿德德雷尔博士
我哪里错了?
更新 //下面的代码工作正常。
void recurse(string s, int mask,int taken, string pref){
if(taken == n){
cout << pref <<endl;
return;
}
for(int i = 0; i < n; i++){
if(((mask …Run Code Online (Sandbox Code Playgroud) 在分析算法时间效率时不考虑乘法常数,因为
A)它们在计算效率函数时相互抵消
B)常数函数随着输入大小的增长而增长非常缓慢
C)当输入大小较小时它们的影响很小
D)它们可以被克服由更快的机器
E)它们不会影响算法的实际运行时间
我的猜测是“B”,但我不知道正确答案。所有选项都是错误的吗?
int main(void) {
printf("abc");
fork();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
此代码的输出是:
abcabc
Run Code Online (Sandbox Code Playgroud)
为什么打印两次,即使fork系统调用在printf语句之后?