반응형
https://leetcode.com/problems/reverse-only-letters/description/
문자열을 다루는 문제였습니다.
📕 풀이방법
📔 풀이과정
s의 alphabet이 아닌 문자열은 그대로 두면서 alphabet인 문자만 뒤집어 저장 후 반환하면 됩니다. iterator와 filter지원되는 rust의 경우 가독성 있게 구현 가능합니다.
📕 Code
📔 C++
class Solution {
public:
string reverseOnlyLetters(string s) {
int j = s.size() - 1;
string ans = s;
for (int i = 0; i < s.size(); i++) {
if (isalpha(s[i])) {
while (!isalpha(s[j])) j--;
ans[i] = s[j--];
}
}
return ans;
}
};
📔 언어 2
impl Solution {
pub fn reverse_only_letters(s: String) -> String {
let mut alphas: Vec<char> = s.chars().filter(|&c| c.is_ascii_alphabetic()).collect();
let mut iter = alphas.into_iter().rev();
s.chars().map(|c| {
if !c.is_ascii_alphabetic() {
c
} else {
iter.next().unwrap()
}
}).collect()
}
}
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > String' 카테고리의 다른 글
(C++, Rust) - LeetCode (easy) 944. Delete Columns to Make Sorted (0) | 2023.09.12 |
---|---|
(C++) - LeetCode (easy) 929. Unique Email Addresses (0) | 2023.09.05 |
(C++) - LeetCode (easy) 868. Binary Gap (0) | 2023.08.04 |
(C++) - LeetCode (easy) 859. Buddy Strings (0) | 2023.08.01 |
(C++) - LeetCode (easy) 844. Backspace String Compare (0) | 2023.07.31 |