250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(Leet Code c++)Valid Palindrome 본문
728x90
반응형
125. Valid Palindrome
Given a string s, determine if it is a palindrome, considering only alphanumeric characters and ignoring cases.
Example 1:
Input: s = "A man, a plan, a canal: Panama" Output: true Explanation: "amanaplanacanalpanama" is a palindrome.
Example 2:
Input: s = "race a car" Output: false Explanation: "raceacar" is not a palindrome.
Constraints:
- 1 <= s.length <= 2 * 105
- s consists only of printable ASCII characters.
주어진 문자열 s가 영숫자로 이뤄진 팰린드롬인지 확인해야 한다.
우선 s를 모두 소문자로 바꿔주고, for문을 통해 알파벳과 숫자인 문자만 tmp 문자열에 추가한다.
tmp가 영숫자로 된 문자열이기 때문에 front와 back을 이용해 앞과 뒤를 비교하면 된다.
(만약 tmp가 비어있으면 while문을 거치지 않고 바로 true 리턴)
front와 back의 인덱스를 각각 늘려주거나 줄이면서 비교하면 된다.
class Solution {
public:
bool isPalindrome(string s) {
string tmp = "";
transform(s.begin(), s.end(), s.begin(), ::tolower);
for(int i = 0; i < s.size(); i++){
if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= '0' && s[i] <= '9')){
tmp += s[i];
}
}
int front = 0;
int back = tmp.size() - 1;
while(!tmp.empty() && front <= back){
if(tmp[front++] != tmp[back--]){
return false;
}
}
return true;
}
};
728x90
반응형
'Leet Code 알고리즘' 카테고리의 다른 글
(Leet Code c++)Linked List Cycle (0) | 2021.07.17 |
---|---|
(Leet Code c++)Single Number (0) | 2021.07.17 |
(Leet Code c++)Best Time to Buy and Sell Stock(2) (0) | 2021.07.16 |
(Leet Code c++)Best Time to Buy and Sell Stock (0) | 2021.07.16 |
(Leet Code c++)Pascal's Triangle(2) (0) | 2021.07.15 |