class Solution {
public String reverseOnlyLetters(String S) {
Stack<Character> s=new Stack<Character>();
int len=S.length();
for (int i = 0; i <len ; i++) {
if((S.charAt(i)>64&&S.charAt(i)<91)||(S.charAt(i)>96&&S.charAt(i)<123))
s.push(S.charAt(i));
}
StringBuilder sb=new StringBuilder();
for (int i = 0; i <len ; i++) {
if((S.charAt(i)>64&&S.charAt(i)<91)||(S.charAt(i)>96&&S.charAt(i)<123))
sb.append(s.pop());
else sb.append(S.charAt(i));
}
return sb.toString();
}
}