
2개의 포인터를 사용하여 2개의 문자열을 비교해 주면 된다.
동일한 경우에만 s와 t의 포인터를 옮기고 아니면 t만 옮기는 형식으로 해결한다.
#include <iostream>
using namespace std;
string s, t;
bool isSubstring()
{
int i = 0, j = 0;
while (true)
{
if (s[i] == t[j]) // 동일한가?
{
++i, ++j;
}
else
{
++j;
}
if (s.size() == i || t.size() == j) // 만약 i 또는 j 끝까지 갔다면
{
break;
}
}
return s.size() == i; // 끝까지 확인했는가?
}
int main()
{
ios::sync_with_stdio(0), cin.tie(0);
while (cin >> s >> t)
{
cout << (isSubstring() ? "Yes" : "No") << "\n";
}
return 0;
}
만약 s의 포인터가 끝까지 도착했다면 t안에는 s의 내용이 있다는 뜻이다. 더 확인해 볼 필요가 없다는 뜻이다.