[Leetcode] 125. Valid Palindrome
Algorithm2021. 8. 7. 17:02
반응형
Identifying the Problem
주어진 문자열이 가운데를 기준으로 대칭인지 확인한다.
Organizing thoughts
1. 특수문자 거르고 대문자는 소문자로 바꿔준다.
1-1 크기가 기존 문자열과 같은 새로운 비교 문자열을 생성
1-2 기존문자열의 길이만큼 반복하면서 비교문자열에 특수문자 거르기
1-3 아스키 코드에 들어오면 비교 문자열에 추가하고 비교 문자열 index값 증가
2. 거른 문자열이 palindrome 인지 파악
2-1 다른경우 발견 시 return false
3. return true
Sourcecode
bool isPalindrome(char * s){
int len = strlen(s);
int index = 0;
char arr[200000] = {0};
for(int i=0; i<len;i++) //새로운 비교 문자열 생성
{
if('a' <= s[i] && s[i]<='z' || 48 <= s[i] && s[i]<= 57) //특수문자는 거른다.
arr[index++] = s[i];
else if('A' <= s[i] && s[i]<='Z') //대문자일 경우 소문자로 변환
arr[index++] = s[i]-'A'+'a';
}
for(int i=0; i<index/2;i++) //Palindrome인지 확인
if(arr[i] != arr[index-1-i]) return false;
return true;
}
Mistake
- char arr[size] 하면 에러남 왜 그런지는 모르겠다.
- strcat(arr, char* s[i] 를 해버리면) s[i] 뒤의 모든 문자열이 들어가므로, strncat(",",1) 을 해야된다.
반응형
'Algorithm' 카테고리의 다른 글
[Leetcode] 141. Linked List Cycle (0) | 2021.08.07 |
---|---|
[Leetcode] 136. Single Number (0) | 2021.08.07 |
[Leetcode] 121. Best Time to Buy and Sell Stock] (0) | 2021.08.07 |
[Leetcode] 118. Pascal's Triangle (0) | 2021.08.07 |
[Leetcode] 217. Contains Duplicate (0) | 2021.08.06 |
댓글()