C언어/문제풀다 하나씩

두 문자열에서 같은 단어 찾기

mcdn 2020. 5. 1. 16:11
반응형

어렵다ㅜㅜㅜ

 

이거 보다 쉬운 것 없나?

#include <iostream>
#include <cstring>
using namespace std;
char sent[16] = "TTABCABTABC";
char sent2[16] = "BCTABCABTT";
int result[3];
int head;int tail;
int main() {
	cin >> sent >> sent2;
	int len1 = strlen(sent);
	int len2 = strlen(sent2);
	if (len1 < len2) {
		swap(sent, sent2);
	}
	for (int i = 0; i < len2;i++) {
		head = i;
		tail = head;
		for (int j = 0;j < len1 - 1;j++) {
			if (sent[j] == sent2[head] && sent[j+1] == sent2[head+1]) {
				int lft = j;
				int k = 0;
				while (sent2[tail] == sent[lft]) {
					k++;
					tail++;
					lft++;
				}
				if (result[0] < k) {
					result[0] = k;
					result[1] = head;
					result[2] = tail;
					
				}
			}
		}


	}
	for (int i = result[1]; i < result[2];i++) {
		cout << sent2[i];
	}cout << endl << endl;
	


}

원리는 2단어 이상 같으면 head, tail로 인덱스 저장하기

 

다만 for j = i라고 해서 계속 에러 났었음

 

input

TTABCABTABC
BCTABCABTT

output 

TABCABT

반응형