【发布时间】:2016-12-17 09:50:32
【问题描述】:
这个问题是对这个post 的轻微改动。 给定一个字符串,我想生成一个字符串向量 有 x 次移除。例如:
String a = "ABCD";
int x = 2;
//vector<string> residue = generate(a, x);
//vector residue would have the following elements:
//"AB", "BC", "CD", "AC" "AD", "BD"
完成此操作后,我想生成第二个
包含带有其他 2 个字符的字符串的字符串向量
删除。但是,代替删除,我想插入
.。例如:
//vector<string> residue2 would have the following elements:
//"..CD", "A..D", "AB..", ".B.D", ".BC.", "A.C."
这是我为x = 1 做的尝试。但是,我无法
生成第二个字符串或泛化x 等于任何数字。
vector<int> orignal;
for(int i = 1; i <= 5; i++) original.push_back(i);
vector<int> data2;
for(int p1 = 0; p1 < length; p1++){
auto data1 = original
data1.erase(data1.begin()+p1);
for(int p2 = 0; p2 < length; p2++){
data2 = original;
if(p2 != p1)
data2.erase(data2.begin()+p2);
//do stuff
}
}
编辑: 我想要实现的是以下内容:(请参阅我的 x=1 的伪代码)
假设original = {1, 2, 3}。然后在外部for-loop、data1 = {2,3} 和data2 = {1,2,3} 的第一次迭代中,然后是data2={1,2,.}。在外部for-loop、data1 = {1,3} 和data2 = {1,2,.} 的第二次迭代中,然后是data2={.,2,3}。然后data1 = {1,2} 再继续一次。现在这是我只从原始元素中删除一个元素的时候。但是,我想概括这一点,以便data1 对 x x 删除。因此,data2 也会有 x 删除,但它会有条不紊地删除 data1 中尚未删除的元素。
【问题讨论】:
-
这是来自 leetcode 吗?
-
顺便说一句,有什么问题?
-
@Walter 我已经更新了问题。
-
抱歉,这个不清楚。首先,它令人困惑(您放弃了字符串以支持数组?)其次,它不是“输出想要给定输入”,而是您想在各种循环中做什么。你为什么要那个?是否需要所有中间结果?我在回答中展示了如何实现第二个任务(原始问题)的结果。它不需要第一个任务的结果(并且不能仅从没有原始数据的任务 1 的输出中完成)。任务 1 可以以类似的方式完成。
-
我想(猜想),你想调用一个例程(
do_stuff(data1, data2),现在显示),其中data1和data2是original的元素列表,由@987654347 制成@在某种程度上你没有很好地解释。正确的?我想,如果你举一个例子,其中包含对do_stuff()的所有调用,比如n=4、x=2,我们也许能够理解你。
标签: c++ string algorithm vector combinatorics