现在在做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;
}
显示如上图所示。
这只是一道很简单的题目,考察的其实只是栈的基本概念。但老实说我很久没打代码了,因此中间还出了很多小错误。
不管怎样,万事开头难,既然选择了这门课程,要做就做好些吧。