P1308 () (변형,의 getline ()을 CIN) 단어의 수를 카운트

제목 설명

일반 텍스트 편집기 신속하게 문서에서 특정 단어를 찾을 수 있습니다 단어 기능을 찾을 수있다, 일부는 특정 단어가 문서에 나타나는 횟수를 셀 수 있습니다.

이제,이 기능을 프로그래밍하고, 특정 요구 사항은 다음과 같습니다 당신은 출력에게, 그것은 주어진 문서에 나타나는 횟수와 첫 번째 항목의 총수 단어를 감안할 때. 참고 : 주어진 단어 경우 경기 단어, 대소 문자 구분과 동일하지만, 즉 단어의 기사를 구분 경우 독립적 인 단어로 제공해야합니다 정확히 일치를 요구, (샘플 1 참조) 기사의 일부분 만 단어가 일치하지 않습니다 (이 샘플 참조).

입력 형식

총  2 개 라인.

첫 번째  문자 만 포함 된 문자열의 동작은, 주어진 단어를 나타냅니다;

첫 번째  에만 해당 기사를 나타내는 문자와 공백을 포함 할 수있는 문자열, 두 가지 역할을합니다.

출력 형식

라인은 문서 특정 단어가 발견되면, 두 정수 사이의 공간에 의해 분리 된 두 개의 출력 정수이다 위치 먼저 문서 즉, 제 (나타나있는 문서에 나타나는 단어의 수는 발생이 문서로부터 위치에서 단어 위치의 첫 글자  제로) 상기 워드 문서에 나타나지 않는 경우, 정수의 직접 출사  - 1

샘플 입출력

기입  
하기 
이거나되지 않게하는 것은 문제이다
수출 
2 0
기입 
하는 
오스만 제국이 그 시간에 그 힘을 잃게나요
수출  
-1

설명 / 팁

데이터 범위

. (1 개) ≤ 워드 길이 . 1 0.

1 개 ≤ 문서 길이 1 , 0 0 0 , 0 0 0.

코드 :

#INCLUDE <cstdio> 
#INCLUDE <알고리즘> 
#INCLUDE <iostream>
 사용  공간을 성병;
int로 주 () {
     INT NUM = 0 , POS = 0 , fpos = - 1 ;
    캐릭터 A, B, TEM = "" ; 
    CIN >> a 및 
    (a.end a.begin () () a.begin () : tolower를)를 변환; 
    ) (getchar가; 
    의 getline (CIN, b); 
    (b.begin () b.end () b.begin () : tolower를)를 변환; 
    위한 ( INT 난 = 0 ; I <b.size을 (); I ++ ) {
         경우 (b [I] == ' ' ) {
             경우 (A == TEM) { 
                NUM을 ++ ;
                경우 (fpos == - 1 ) { 
                    fpos = I- tem.size (); 
                } 
            } 
            TEM = "" ;
            계속 ; 
        } 
        TEM + = B [I]; 
    } 
    경우 (fpos == - 1 ) { 
        의 printf ( " -1 " ); 
    } 
    다른 { 
        의 printf ( " % D % D" , NUM, fpos); 
    } 
}

실전 문제 :

  1. 실행될 때 혓바닥이, 개행 문자를 입력하는 모든 시작을 무시합니다 '\ n'과 공간,의 getline ()는 무시되지 않습니다
  2. 동작은 getchar가 ()이고 : 삭제 버퍼링 잔류 '\ n'
  3. 자열 소 :( 전송 헤더) #INCLUDE <알고리즘> 추가 할
    (a.end a.begin () () a.begin () : tolower를)를 변환;
  4. 문자열 대문자 :( 전송 헤더)를 첨가 #INCLUDE <알고리즘> 될
    (a.end a.begin () () a.begin () ::의 ToUpper) 변환;

추천

출처www.cnblogs.com/bjxqmy/p/12193742.html