문자열 이동에 포함된 문제 (★)
문제 설명
두 개의 문자열 s1과 s2를 지정하여 s1을 통해 순환 이동 (rotate)을 통해 얻을 수 있는 문자열이 s2에 포함되어 있는지 판단합니다.
샘플 입력
AABCD CDAA ABCD ACBD
샘플 출력
true false
코드
#include
#include
bool search(char* src, char* des, int startIndex);
int main(int argc, char** argv) {
char src[100];
char des[100];
while(scanf("%s %s",src,des) != EOF)
{
int len = strlen(src);
int index = 0;
for(; index < len; ++index)
{
if (src[index] == des[0])
{
bool success = search(src, des, index);
if (success){
printf("true
");
break;
}
}
}
if (index == len)
{
printf("false
");
}
}
return 0;
}
bool search(char* src, char* des, int startIndex)
{
int srcLen = strlen(src);
int desLen = strlen(des);
int index = 0;
for(; index < desLen; ++index)
{
if (src[startIndex] == des[index])
{
++startIndex;
startIndex %= srcLen;
} else {
break;
}
}
return index == desLen;
}
아이디어 및 코드 설명
startIndex %= srcLen;
는 순환이동과 관련된 곳에서 운영체제에서'생산자-소비자'의 모델을 떠올릴 수 있다.이렇게 남은 것을 대열의 앞머리로 되돌리는 방법은 논리적으로 대열의 앞머리와 끝을 연결하는 것과 같다.if (src[index] == des[0])
가속에 사용됩니다.검색 함수에 대한 봉인 때문에 들어갈 때마다 strlen () 을 두 번 호출해야 합니다.검색 ()에 대한 호출을 줄이면 그 정도의 시간을 절약할 수 있겠지.이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.