【Leetcode】仅仅反转字母
题目描述:
给定一个字符串 S,返回 “反转后的” 字符串,其中不是字母的字符都保留在原地,而所有字母的位置发生反转。
输入样例1:
ab-cd
输出样例1:
dc-ba
输入样例2:
a-bC-dEf-ghIj
输出样例2:
j-Ih-gfE-dCba
输入样例3:
Test1ng-Leet=code-Q!
输出样例3:
Qedo1ct-eeLg=ntse-T!
解题思路:
我是用stack+俩趟for循环才搞定的,第一次for循环把所有的字母推入栈中,第二次for循环把所有出现字母的位置用栈顶元素来代替。
AC代码:
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
string reverseOnlyLetters(string S) {
stack<char> s;
for(int i = 0; i < S.length(); i++)
{
if(isalpha(S[i]))
{
s.push(S[i]);
}
}
string ans;
for(int i = 0; i < S.length(); i++)
{
if(isalpha(S[i]))
{
ans += s.top();
s.pop();
}
else ans += S[i];
}
return ans;
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
string str;
getline(cin,str);
Solution s;
cout << s.reverseOnlyLetters(str) << endl;
return 0;
}
原文链接:【Leetcode】仅仅反转字母
麦芽雪冷萃 版权所有,转载请注明出处。
还没有任何评论,你来说两句吧!