XDOJ.T81_문자열 찾기
표제
문자열 찾기
유별
문자열 처리
시간 제한
2S
메모리 제한
256Kb
문제 설명
문자열 과 여러 줄 의 문 자 를 보 여 줍 니 다. 출력 은 이 텍스트 에 지정 한 문자열 의 줄 이 나 타 났 습 니 다.프로그램 은 대소 문자 민감 한 옵션 도 지원 해 야 합 니 다. 옵션 이 열 렸 을 때 같은 자모의 대문자 와 소문 자 를 다른 문자 로 간주 합 니 다.옵션 이 닫 혔 을 때 같은 자모의 대문자 와 소문 자 를 같은 문자 로 표시 합 니 다.
입력 설명
입력 데이터 첫 줄 에는 대소 문자 영문 자모 로 구 성 된 문자열 s 가 포함 되 어 있 으 며 길이 가 100 을 넘 지 않 습 니 다.두 번 째 줄 에는 대소 문자 민감 옵션 을 나타 내 는 숫자 가 포함 되 어 있 습 니 다.숫자 가 0 일 때 는 대소 문자 가 민감 하지 않다 는 뜻 이 고, 숫자 가 1 일 때 는 대소 문자 가 민감 하 다 는 뜻 이다.세 번 째 줄 은 정수 n 을 포함 하여 제 시 된 텍스트 줄 수 를 표시 합 니 다.(n 의 수치 범 위 를 지정 하지 않 았 습 니 다. n < = 100, 만점 을 받 을 수 있 습 니 다) 다음 n 줄 은 하나의 문자열 을 포함 하고 문자열 은 대소 문자 영문 자모 로 구성 되 며 빈 칸 과 다른 문 자 를 포함 하지 않 습 니 다.각 문자열 의 길 이 는 100 을 초과 하지 않 습 니 다.
출력 설명
여러 줄 을 출력 합 니 다. 줄 마다 문자열 이 포함 되 어 있 습 니 다. 문자열 s 가 포 함 된 줄 을 순서대로 보 여 줍 니 다.
입력 샘플
Hello 1 5 HelloWorld HiHiHelloHiHi GrepIsAGreatTool HELLO HELLOisNOTHello
출력 샘플
HelloWorld HiHiHelloHiHi HELLOisNOTHello
이 문제 에 대해 말하자면, 단지 두 가지 상태 일 뿐이다
#include
#include
#define WORD 1
#define LETTER -1
int main()
{
char word[101];
gets(word);
int sensi; //sensitivity( ),
int n;
scanf("%d%d",&sensi,&n);
getchar();
if(!sensi)strupr(word); // sensi 0, , word
char str[101][101],str1[101]; /* str1 str
*/
int i=0,j;
for(;i<n;++i)
{
gets(str[i]);
}
int state=LETTER;
int len=strlen(word);
for(i=0;i<n;++i)
{
strcpy(str1,str[i]);
if(!sensi)
{
strupr(str1); // , str
}
int done=0; /* , , ,
done */
for(j=0;str1[j];++j)
{
// printf("J:%d STATE:%d
",j,state);
switch(state)
{
case(LETTER):
if(str1[j]==word[0])state=WORD;
break;
default:
if(state<len)
{
if(str1[j]==word[state])++state;
else
{
j-=state; /*
, */
state=LETTER; //
}
}
else if(state==len)
{
printf("%s
",str[i]); // , str1 , str[i]
done=1;
state=LETTER;
}
}
if(done)break; // , done 1,break,
}
if(state==len&&!done) // , done 1,
{
printf("%s
",str[i]);
state=LETTER;
}
}
return 0;
}
상태 가 두 가지 밖 에 없 는 것 을 제외 하고 본 문 제 는 아직도 많은 특수 한 점 이 있다.
'j - = state;' 라 는 문 구 를 추가 하지 않 으 면 프로그램 이 'HeHeHeheH' 의 세 번 째 'H' 를 검 사 했 을 때 state 가 LETTER 로 바 뀌 고 다음 순환 전에 j 가 1 을 추가 한 다음 프로그램 이 세 번 째 'e' 를 검사 하기 시작 하면 출력 이 없 음 을 발견 할 수 있 습 니 다.물론 이 문 제 는 더 간단 한 알고리즘 이나 사고 가 있 을 수 있다.만약 사내 들 이 있다 면, 나 는 반드시 귀 담아 들 어야 한다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Rails Turbolinks를 페이지 단위로 비활성화하는 방법원래 Turobolinks란? Turbolinks는 링크를 생성하는 요소인 a 요소의 클릭을 후크로 하고, 이동한 페이지를 Ajax에서 가져옵니다. 그 후, 취득 페이지의 데이터가 천이 전의 페이지와 동일한 것이 있...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.