这是我的第一个StackOverflow问题,如果我没有按照社区准则处理这个问题并且我是否应该删除它,请告诉我.
我得到了我的第一个面试问题,因为我的实施而被拒绝了.
问题是:
设计并实现一个存储整数集合的C++类.在施工时,收集应该是空的.相同的数字可以存储多次.
实现以下方法:
插入(int x).插入值"x"的条目.
擦除(int x).从集合中删除一个值为"x"的条目(如果存在).
擦除(int from,int to).删除[from,to]范围内值的所有条目.
Count(int from,int to).计算有多少条目具有[from,to]范围内的值.
我认为一个好的实现是使用链表,因为它使用非连续内存并且删除条目不需要改组大量数据(如向量或数组).但是,我得到了公司的反馈,说我的实施时间复杂度为O(n ^ 2),效率非常低,所以我被拒绝了.如果在另一次采访中弹出类似的问题,我不想重复同样的错误,所以我想知道解决这个问题的最佳方式是什么(朋友建议使用地图,但他也不确定).
我的代码是:
void IntegerCollector::insert(int x)
{
entries.push_back(x);
}
void IntegerCollector::erase(int x)
{
list<int>::iterator position = find(entries.begin(), entries.end(), x);
if (position != entries.end())
entries.erase(position);
}
void IntegerCollector::erase(int from, int to)
{
list<int>::iterator position = entries.begin();
while (position != entries.end())
{
if (*position >= from && *position <= to)
position = entries.erase(position);
else
position++;
}
}
int IntegerCollector::count(int from, int to)
{
list<int>::iterator position = …Run Code Online (Sandbox Code Playgroud) 我正在处理一个脚本,该脚本具有一些传递给字符串的变量,然后将其打印出来。最初的字符串只有6行,我不需要外部文件,但现在有了一个新字符串,可以填充1000行以上。新字符串还具有一些字段,这些字段将被脚本中声明的变量替换。
文本文件具有以下内容:
Hello $name
Run Code Online (Sandbox Code Playgroud)
该代码应该包含几个部分。
my $name = 'Foo';
Run Code Online (Sandbox Code Playgroud)
my $content;
open(my $fh, '<', $filename) or die "cannot open file $filename";
{
local $/;
$content = <$fh>;
}
close($fh);
Run Code Online (Sandbox Code Playgroud)
print $content
Run Code Online (Sandbox Code Playgroud)
预期结果:
Hello Foo
Run Code Online (Sandbox Code Playgroud)
我想知道是否有可能从文件中读取“ Hello $ name”但将其打印为“ Hello Foo”,因为变量名称被声明为Foo。
我在 Java 中有两个非常相似的函数:
public Connector GetRelevantConnector(MyData myData, Connector c1, Connector c2) {
if(myData.useC1()){
return c1;
}
return c2;
}
Run Code Online (Sandbox Code Playgroud)
同样,我有以下功能:
public String GetRelevantConnector(MyData myData, String c1, String c2) {
if(myData.useC1()){
return c1;
}
return c2;
}
Run Code Online (Sandbox Code Playgroud)
上面的函数已经被简化,但无论如何,函数内部的所有逻辑都依赖于 myData 来选择 c1 或 c2。这些函数本质上是重复的代码,我想知道是否可以将 Connector/String 声明为泛型类型,并且无论泛型输入是什么,函数的返回类型都是如此。这可能吗?
我有一个对象,它在初始化时需要一个字符串来标识它的名称。
String name = "MyObject" + Integer.toString(objectNum);
object = new Object(name);
Run Code Online (Sandbox Code Playgroud)
在上面的示例中,名称遵循一个约定,即整数与字符串“MyObject”连接在一起。一位同事抱怨说,由于 int 到 string 的转换,我编写这段代码的方式从性能角度来看实际上很糟糕。该数字作为 int 接收,对此我无能为力。对象参数必须接受一个字符串。我怎样才能更快地做到这一点?使用字符串格式有帮助吗?