본문 바로가기
Problem Solving

[C++] [LeetCode 125] Valid Palindrome (pps 5-6)

by tls1107 2021. 7. 22.
728x90
반응형


문제 풀기 전 생각 : 

/*
문자열의 안에 있는 알파벳과 숫자가 아닌 것들은 제외시키고
남아있는 것들로 앞뒤가 같은지 반복문으로 판별한다.
*/

class Solution {
public:
    bool isPalindrome(string s) {
        string str = "";
        for(int i=0 ; i<s.length() ; i++){
            if(isalpha(s[i]) != 0 || isdigit(s[i])) str += toupper(s[i]); 
        }
        for(int i=0 ; i<str.length()/2 ; i++){
            if(str[i] != str[str.length() - i-1] ) return false;
        }
        return true;
    }
};

https://leetcode.com/problems/valid-palindrome/

 

Valid Palindrome - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com


풀 때 어려웠던 점 또는 느낀점 :

isalpha() 함수의 리턴값이 boolean이 아니라

int 라는 것을 알 수 있었다.


개선방안 :

class Solution {
public:
    bool isPalindrome(string s) {
     string str="";
        for(int i=0;i<s.length();i++)
        {
            if((s[i]>='a' && s[i]<='z') || (s[i]>='A' && s[i]<='Z') || (s[i]>='0' && s[i]<='9'))
                str+=tolower(s[i]);
        }
        int len=str.length();
        for(int i=0;i<len/2;i++)
        {
            if(str[i]!=str[len-i-1])
                return false;
        }
        
        return true;
    }
};

나와 같은 접근법이다. 

차이점으로는 나는 모든 문자를 대문자로 변환했지만 

위의 코드는 소문자로 변환했다는 사실이다.

728x90
반응형

댓글