[Leetcode] 125. Valid Palindrome

Algorithm|2021. 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

댓글()