【发布时间】:2020-11-23 11:52:34
【问题描述】:
问题是: 编写一个函数(AllExist),它接收一个非空堆栈stk(int)作为参数,如果堆栈中每个数字的所有第一个数字都作为stk的任何数字的最后一个数字出现,它将返回true , 否则返回 false。 例如: 对于stk(从顶部向下开始)122、251、565、12334、28、7。该函数将返回true。 1 、 2 、 5 和 7 出现在堆栈中任何数字的最后一位。
** clone 是一个函数,它返回与给定堆栈相同的堆栈。
我的建议:
public static bool AllExist(stack<int> stk)
{
int x=0; int i; int z; bool bl; string str;
stack <int> stk1=clone (stk);
while (!stk1.IsEmpty())
{
i=stk1.Pop();
while(i>=10)
i/=10;
x=x*10+i;
}
str=x.ToString();
stack<int> stk2=Clone(stk);
while(!stk2.IsEmpty())
{
z=stk2.Pop()%10;
if (str.IndexOf(z.ToString())>-1)
bl=true;
bl=false;
}
return bl;
}
** 这都是翻译,如有误解,敬请原谅。
谢谢!
【问题讨论】:
-
如果您实际上是在对集合进行迭代,那么任何理由让它成为一个堆栈。
-
我认为实现不正确。显然
x被一遍又一遍地覆盖,直到堆栈为空;这可能不是你想要的。在上层while循环终止时,x仅取决于堆栈底部。第二个whileloop 的行为方式类似。