각 단어들의 앞부분을 확인해서 단어가 같은 지 확인한다.
다음 문자열을 자르는 함수이다.
substr(start, end); //스트링의 구간추출
그 전에 인접 인덱스만 확인할 수 있도록 하기 위해
컨테이너를 정렬해서 앞부분 숫자가 같은 단어끼리 붙게 만든다.
배열의 원소들을 순차적으로 돌면서 해당 원소의 다음 원소를 확인해야 하기 때문에
인덱스는 0부터 마지막 원소 전까지 체크한다.
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool solution(vector<string> phone_book) {
sort(phone_book.begin(), phone_book.end());
auto i = adjacent_find(phone_book.begin(), phone_book.end(), [](string a, string b) {
return a == b.substr(0, a.size());
});
return i == phone_book.end();
}
int main()
{
cout << solution({ "119", "97674223", "1195524421" }) << '\n';
cout << solution({ "123","456","789" }) << '\n';
cout << solution({ "12","123","1235","567","88" }) << '\n';
}
실행결과
false
true
false