疑问
题目中说text的长度在10,000,000以内,这有点大,那么肯定不能使用字符数组一次性读完一行的text,我不知道string
类型可不可以做到,我看别人的代码使用string
类型是过了题的。
代码
#include <stdio.h>
#include <string.h>
#include <math.h>
const int maxn = 10000000 ;
bool cmp ( char a[ ] , char b[ ] , int len) {
int l = strlen ( a) ;
if ( l != len) {
return false ;
} else {
for ( int i= 0 ; i< l; i++ ) {
int value = abs ( a[ i] - b[ i] ) ;
if ( value != 0 && value != 32 ) {
return false ;
}
}
return true ;
}
}
int main ( ) {
char word[ 20 ] ;
char input[ maxn] ;
int ans = 0 ;
int pos = - 1 ;
int now = - 1 ;
int len = 0 ;
scanf ( "%s" , word) ;
char c;
getchar ( ) ;
while ( scanf ( "%c" , & c) != EOF ) {
if ( c == ' ' ) {
bool result = cmp ( word, input, len) ;
if ( result) {
ans++ ;
if ( ans== 1 ) {
pos = now - len + 1 ;
}
}
len= 0 ;
} else {
input[ len] = c;
len++ ;
}
now++ ;
}
if ( ans != 0 ) {
printf ( "%d %d" , ans, pos) ;
} else {
printf ( "-1" ) ;
}
return 0 ;
}
反思
这里直接使用了最原始暴力 的解决方法。。。