栈的运用

本文介绍了一种使用栈来实现字符串逆序输出的方法。通过压栈与弹栈操作,实现了简单有效的字符串逆序算法。

现在在做Leetcode上的题,从易到难开始。

题意如下:

写出一个能将一个字符串逆向输出的函数。

一开始我的思路是想得到字符串之后得到字符串长度,然后构建一个新的字符串数组,将对应的字符赋到相应的位置。但是显然这个方法并不好。我很快想到其实这不就是栈的应用吗。把字符串压入栈,然后栈依次弹出元素,得到的就正好是逆向的字符串。

思路如下:

1得到字符串A,初始化栈

2将字符串A压入栈

3取栈顶元素赋值给字符串B

4弹出栈顶元素

5若栈不为空,重复3

6结束

 

代码:

#include<stack>
class Solution {
public:
    string reverseString(string s) {
      stack<char>st;
      for(int k=0;;k++)
      {
         if(st.empty()==1)
         break;
         else
         st.pop();
      }
     for(int i=0;;i++)
      {
          if (s[i]=='\0')
          break;
          else
              st.push(s[i]);
      }
     int j;
      for(int j=0;;j++)
      {
            s[j]=st.top();
            st.pop(); 
            if(st.empty()==1)
            break;
      }
      return s;
    }   
};

主程序代码:

int main(){
cout<<"输入一个字符串:"<<endl;
string str1,str2;
cin>>str1;
class Solution sltion;
str2=sltion.reverseString(str1);
cout<<str2<<endl;
system("pause");
return 0;
    
}

显示如上图所示。

这只是一道很简单的题目,考察的其实只是栈的基本概念。但老实说我很久没打代码了,因此中间还出了很多小错误。

不管怎样,万事开头难,既然选择了这门课程,要做就做好些吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值