使用堆栈检查给定的字符串序列是否是回文序列

时间:2012-08-21 22:40:59

标签: c palindrome stack

我想知道如何存储从堆栈弹出的字符或整数,以便我可以将它与原始字符串或int值进行比较。

例如:

n = 1221;
n = n / 1000; // so that i get the last digit in this case 1 and dividing the remainder 
              // further each time by 100, 10 and 1

如果我存储变量中的每个数字 - 例如,假设我将上述除法中的1存储在名为s的变量中,并将其推入堆栈。 在此之后,我将值重新弹出;当我这样做时,如何检查天气是否等于原始数字?我可以用if条件检查它,例如,如果我有3个那么

(i == p && check for other two numbers)

但我不想要我检查任何尺码。

请不要发送关于如何操作的源代码,只需给我几个片段或一些提示,谢谢。另外,请告诉我你是如何找到解决方案的。

谢谢!

2 个答案:

答案 0 :(得分:2)

  

不要发送关于如何操作的源代码

ok;)

  

给我一​​些片段或一些提示

Recursion

  

当你提供解决方案时,让我知道你是如何找到解决方案的,天气你已经看过这样的程序或者知道算法,或者当你看到问题时想出了解决方案。感谢

我这么做太久了,不记得我第一次看到它的地方= \

答案 1 :(得分:0)

你可以使用递归来解决问题,就像Justin提到的那样。 一旦开始递归,您将使用适当的除数(1000,100,10,1)将数字除以堆栈中的商。你这样做直到最后。 到达“单位”位置后,存储单位数字,然后开始弹出堆栈。 有一个if-else梯形图从递归函数返回一个整数。 梯形图将具有在左移位之后返回int并返回变量的条件。 您可以在主函数中进行检查。

1             ->1221(left shift 122 OR with 1)
  2          ->122(left shift 12 OR with 2)
    2       ->12(left shift 1 OR with 2)
      1---->1

希望这会有所帮助。 谢谢 阿迪亚