输入
"天空是蓝色的"
预期输出
"蓝色是天空"
我的输出
"蓝色是天空"
我无法在代码中指出错误。
以下是代码:
#include <bits/stdc++.h>
using namespace std;
int main() {
string s = "the sky is blue";
reverse(s.begin(),s.end());
stack<char> t;
for(int i = 0;i < s.length();i++){
if(s[i] != ' '){
t.push(s[i]);
}
else{
while(!t.empty()){
cout << t.top();
t.pop();
}
cout << " ";
}
}
return 0;
}
答案 0 :(得分:1)
你推动&#34; eht&#34;进入堆栈,但你不会开始弹出它,因为字符串的长度不允许你,因为for循环停止执行。
在for循环之后弹出它,如下所示:
#include <string>
#include <stack>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
string s = "the sky is blue";
reverse(s.begin(),s.end());
stack<char> t;
for(unsigned int i = 0;i < s.length();i++){
if(s[i] != ' '){
t.push(s[i]);
}
else {
while(!t.empty()){
cout << t.top();
t.pop();
}
cout << " ";
}
}
while(!t.empty()){
cout << t.top();
t.pop();
}
}
输出:
蓝色是天空
答案 1 :(得分:0)
C ++程序使用堆栈数据结构反转字符串中的单词。
例如“ my.name.is.vivek.mutha”将输出显示为“ mutha.vivek.is.name.my”。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s,s1;
std::stack<std::string> st;
int k=0;
cin>>s;
int l = s.length();
vector<string> str;
for(int i=0;i<l;i++)
{
if(s[i]=='.'){
str.push_back(s1);
str.push_back(".");
s1="";
}
else
s1.append(s,i,1);
}
str.push_back(s1);
for(int i=0;i<str.size();i++)
st.push(str[i]);
while(!st.empty()){
cout<<st.top();
st.pop();
}
}