일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 코딩테스트
- 알고리즘
- zeros
- LV1
- 프로그래머스
- 마니토바
- 매트랩
- C++
- 컴퓨터과학과
- Plotting
- 온라인석사
- 선형대수
- EOI
- leetcode
- 방송통신대학교
- cpp
- 기본
- mpnp
- 조지아텍
- 주정부이민
- 캐나다 영주권
- LAA
- 방통대
- 머신러닝
- MATLAB
- machine learning
- 개발자
- omscs
- Deep learning
- 딥러닝
Archives
- Today
- Total
Krononberg
290. Word Pattern.cpp 본문
🔑 주어진 word 집합의 string을 mapping하여 pattern2를 만들고, pattern1과 패턴 매칭.
class Solution {
public:
bool wordPattern(string pattern, string s) {
//if pattern size ==1, there is no more to compare. so return ture.
if (pattern.size()==1) return true;
char c ='a';
int j=0;
string pattern2 = "";
map<string,char>m;
for(int i =0; i<s.size();i++){
string tmp ="";
while(1){
if(s[i] == ' ') break;
else if(i==s.size()-1){
tmp+=s[i];
break;
}
tmp+= s[i];
i++;
}
if(m.find(tmp)==m.end()) m[tmp] = c++;
pattern2 += m[tmp];
if(i==s.size()) break;
}
//if pattern sizes don't match each other, because of its imbalance, return false.
if(pattern.size()!= pattern2.size()) return false;
//check they have same pattern through loop.
for(int i=0; i<pattern.size(); i++){
for(int j =0; j<pattern.size(); j++){
// cout<< pattern[j]-pattern[i] << " " << pattern2[j]-pattern2[i] <<endl;
if(pattern[j]-pattern[i]==0 && pattern2[j]-pattern2[i]!=0) return false;
if(pattern2[j]-pattern2[i]==0 && pattern[j]-pattern[i]!=0) return false;
}
}
// cout<< endl<<pattern << " " <<pattern2;
return true;
}
};
'개발 로그 > 알고리즘' 카테고리의 다른 글
118. Pascal's Triangle.cpp (0) | 2021.12.13 |
---|---|
2. Add Two Numbers.cpp (0) | 2021.11.26 |
202. Happy Number.cpp (0) | 2021.11.24 |
766. Toeplitz Matrix.cpp (0) | 2021.11.22 |
1700. Number of Students Unable to Eat Lunch.cpp (0) | 2021.11.21 |