统计单词数

深刻地体会到一个好的方法可以完美避开所有坑点。

#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<climits>
#include<algorithm>
using namespace std;
char Aim[15],Pas[2010000];
int La,Lp,Pos = -1,Ans;
void Init(char a[],int Len) {
    for(int i = 0; i<Len; i++) {
        if(a[i] >= 'a' && a[i] <= 'z') {
            a[i] = a[i] - 'a' + 'A';
        }
    }
}
bool Cmp(int Start) {
    for(int i = 0; i<La; i++) {
        if(Aim[i] != Pas[i + Start]) {
            return false;
        }
    }
    return true;
}
int main() {
    gets(Aim);
    gets(Pas);
    La = strlen(Aim);
    Lp = strlen(Pas);
    Init(Aim,La);
    Init(Pas,Lp);
    for(int i = 0; i<Lp; i++) {
        if(Pas[i] != ' ' && Pas[i + La] == ' ' && Cmp(i)) {
            if(!i || Pas[i - 1] == ' ') {
                if(Pos == -1) {
                    Pos = i;
                }
                Ans++;
            }
        }
    }
    if(Ans) {
        printf("%d %d",Ans,Pos);
    } else {
        printf("-1");
    }
    return 0;
}
posted @ 2018-03-29 17:17  WenOI  阅读(367)  评论(0编辑  收藏  举报
水波背景