일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- server
- DP
- 비트연산
- css
- array
- queue
- c++
- Context
- map
- route
- event
- UE5
- state
- priority_queue
- MySQL
- leetcode
- React
- count
- JSX
- Props
- Callback
- component
- nodeJS
- BinaryTree
- bit
- treenode
- axios
- routes
- Navigation
- node.js
- Today
- Total
우사미 코딩
[C++] string을 구성하는 알파벳의 개수를 배열로 저장하는 방법 (lowercase) 본문
[C++] string을 구성하는 알파벳의 개수를 배열로 저장하는 방법 (lowercase)
맑은 눈의 우사미 2023. 4. 17. 14:49leetcode에서 anagram이나 permutation string 관련 문제를 풀 때 자주 사용한다
[anagram]
- anagram은 문자의 순서를 바꾸어 다른 단어나 문장을 만드는 것
- anagram문자를 구성하는 알파벳의 개수는 동일하나 배치를 다르게 한다
- "rac"은 "car"의 anagram이다
- "aab"는 "aba"의 anagram이다
[permutation in string - 순열]
- 순서가 부여된 임의의 집합을 다른 순서로 뒤섞는 연산
- "abc"의 permutation - "abc", "acb", "bac", "bca", "cab", "cba"
- n개의 char로 만들 수 있는 모든 string의 조합은 n!개이다
[string을 구성하는 char의 개수를 배열에 저장하기]
- 주어진 string은 "abce"라고 했을 때 아래의 그림처럼 char의 개수를 저장한다
- 알파벳의 "개수"를 저장할 벡터이므로 자료형은 "int"로 한다
1. 알파벳 a-z의 개수는 26개이므로 사이즈가 26인 vector를 선언하고 초기값을 0으로 설정한다
vector<int> v(26, 0);
2. string을 순회하면서 해당하는 char의 index의 값을 1씩 증가시킨다
for (int i = 0; i < str.size(); i++) {
int idx = str[i] - 'a'; // a가 0부터 시작하는 알파벳의 인덱스를 얻을 수 있다
v[idx]++;
}
3. 코드
using namespace std;
int main() {
vector<int> v(26, 0); // 알파벳 a-z : 26개, 초기값 0
string str = "abce";
cout << "str : " << str << endl;
cout << "- before : " << endl;
for (auto i : v) {
cout << i << " ";
}
cout << endl;
for (auto c : str) {
int idx = c - 'a';
v[idx]++;
}
cout << "- after : " << endl;
for (auto i : v) {
cout << i << " ";
}
cout << endl;
return 0;
}
4. 출력결과
str : abce
- before :
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
- after :
1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
'Programming (C++) > C++ 자료구조' 카테고리의 다른 글
[C++] priority_queue 우선순위큐 (0) | 2023.05.11 |
---|---|
[C++] int to string, string to int (0) | 2023.04.16 |
[C++] char to int (char를 int로 변환하는 방법) (0) | 2023.04.16 |
[C++] 1차원, 2차원 vector 선언하기 + 초기값 설정 (0) | 2023.04.16 |
[C++] vector 정렬하기 (오름차순, 내림차순) - sort (0) | 2023.04.16 |