티스토리 뷰
https://leetcode.com/problems/count-and-say/
숫자를 입력받으면 숫자에 대한 counting을 진행한다
n = 1 return 1
n = 2 return 11 (1이 1개)
n = 3 return 21 (1이 2개)
n = 4 return 1211 (2가 1개, 1이 1개)
n = 5 return 111221 (1이 1개, 2가 1개, 1이2개)
impl Solution {
pub fn count_and_say(n: i32) -> String {
let base = "1";
Self::produce_next(1, n, base.to_string())
}
fn produce_next(current: i32, end: i32, str: String) -> String {
if current == end {
return str;
}
let mut prev : char = ' ';
let mut freq : i32 = 0;
let mut result = String::from("");
for ch in str.chars() {
if prev == ' ' {
prev = ch;
freq += 1;
} else if ch == prev {
freq += 1;
} else {
result.push_str(&format!("{}{}", freq, prev));
prev = ch;
freq = 1;
};
}
result.push_str(&format!("{}{}", freq, prev));
Self::produce_next(current + 1, end, result)
}
}
'알고리즘 문제 풀이' 카테고리의 다른 글
[알고리즘문제] 릿코드 Employee Importance (0) | 2021.06.11 |
---|---|
[알고리즘문제] 릿코드 Count of Matches in Tournament (0) | 2021.05.29 |
[알고리즘문제] 릿코드 Rotate Image (0) | 2021.05.26 |
[알고리즘문제] 릿코드 Climbing Stairs (0) | 2021.05.19 |
[알고리즘문제] 릿코드 Best Time to Buy and Sell Stock(시간초과, brute force) (0) | 2021.05.18 |