erase를 통해 공백 제거 방법
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
using namespace std;
string removeWhitespace(string str)
{
for (int i = 0; i < str.size(); i++)
{
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
}
return str;
}
int main()
{
string str = " Hello world ";
cout << removeWhitespace(str) << endl; // HelloWorld 출력
return 0;
}
erase를 통해서 제거를 해주는 방식입니다. for문을 통해서 반복을 진행해줬습니다.
먼저 erase의 사용법을 알려면 remove의 사용을 알아야 하는데요.
revmoe(str.begin(), str.end(), ' ') 이런 식으로 해주면 ' ' 즉 공백을 문자열의 맨 끝으로 보내주게 됩니다. 그리고 remove에는 해당 문자를 가리키는 주소가 리턴이 되게 됩니다.
str.erase(std::remove(str.begin(), str.end(), ' '), str.end());
이 함수는 주어진 문자열 범위에는 공백을 찾아 문자열 뒤로 이동시키기 때문에
erase(remove, str.end()); 이렇게 되면 erase()함수는 시작 위치부터 끝 위치까지의 범위를 받아들이고 해당 범위에 있는 요소를 삭제합니다. 여기에선 remove()함수에서 공백을 뒤로 이동시킨 뒤에 그 이후의 요소를 삭제하기 위해 사용됩니다.
따라서 erase()함수는 이동된 공백을 제거하여 최종적으로 문자열에서 모든 공백을 삭제합니다.
이것이 작동하는 이유는 remove()는 함수의 특정 값으로 반환하고 그 후에 이동된 요소를 삭제하기 위해 erase(remove(), end()) 이렇게 해주면 remove로 return된 특정 값부터 end()까지 삭제되어서 최종적으로 문자열에서 공백이 제거됩니다.
화문인지 확인하는 함수
#include <iostream>
#include <string>
using namespace std;
bool isPalindrome(string str)
{
for (int i = 0; i < str.size()/2; i++)
{
if (str[i] == str[str.size() - i -1])
continue;
else
{
return false;
}
}
return true;
}
int main()
{
string str = "racecar";
cout << isPalindrome(str) << endl;
return 0;
}
bool isPalindrome(string str)
{
int start = 0;
int end = str.length() - 1;
while (start < end)
{
if (str[start] != str[end])
{
return false;
}
start++;
end--;
}
return true;
}
'IT 프로그래밍 > 운영체제' 카테고리의 다른 글
HTTP, SSL 설명 (0) | 2024.08.21 |
---|---|
DNS란? 용어 정리 DNS쿼리 8단계 (0) | 2024.08.21 |
OSI 7계층 (0) | 2024.08.21 |
컴퓨터 네트워크의 작동 방식 (0) | 2024.08.21 |