/* package whatever; // don't place package name! */
import java.util.* ;
import java.lang.* ;
import java.io.* ;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
int licznikWystapien = 0 ;
tablicaSlow = gdzie.split ( "\\ s+" ) ;
for ( int i = 0 ; i < tablicaSlow.length ; i++ )
{
if ( tablicaSlow[ i] .contains ( co) )
{
licznikWystapien++;
}
}
return licznikWystapien;
}
{
if ( co.length ( ) <= 0 || gdzie.length ( ) < co.length ( ) ) {
return 0 ;
}
int licznikWystapien = 0 ;
int idx = 0 ;
while ( idx >= 0 && ( idx + co.length ( ) <= gdzie.length ( ) ) ) {
idx = gdzie.indexOf ( co, idx) ;
if ( idx >= 0 ) {
licznikWystapien++;
idx++;
}
}
return licznikWystapien;
}
int cnt = 0 ;
for ( int i = 0 ; i < s.length ( ) - p.length ( ) + 1 ; ++ i) {
if ( s.subSequence ( i, i + p.length ( ) ) .equals ( p) )
++ cnt;
}
return cnt;
}
private static void test
( int testId,
int methodId,
String text,
String pattern,
int expected
) { int result;
if ( methodId == 1 ) {
result = strFindAndCount( text, pattern) ;
} else if ( methodId == 2 ) {
result = strFindAndCount2( text, pattern) ;
} else {
result = strFindAndCount3( text, pattern) ;
}
if ( result == expected) {
System .
out .
printf ( "Test %d, method %d: OK%n" , testId, methodId
) ; } else {
System .
out .
printf ( "Test %d, method %d: failed, expected: %d, result: %d%n" , testId, methodId, expected, result
) ; }
}
private static void test
( int testId,
String text,
String pattern,
int expected
) { test( testId, 1 , text, pattern, expected) ;
test( testId, 2 , text, pattern, expected) ;
test( testId, 3 , text, pattern, expected) ;
}
{
test( 1 , "mama ma kota" , "ma" , 3 ) ;
test( 2 , "mama ma kota" , "" , 0 ) ;
test( 3 , "" , "" , 0 ) ;
test( 4 , "mama" , "mama" , 1 ) ;
test( 5 , "ma" , "mama" , 0 ) ;
test( 6 , "mama" , "m" , 2 ) ;
test( 7 , "mama, mamma mia" , "ma" , 4 ) ;
test( 8 , "maaa, mia" , "aa" , 2 ) ;
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CgovKiBOYW1lIG9mIHRoZSBjbGFzcyBoYXMgdG8gYmUgIk1haW4iIG9ubHkgaWYgdGhlIGNsYXNzIGlzIHB1YmxpYy4gKi8KY2xhc3MgSWRlb25lCnsKCQogICAgcHVibGljIHN0YXRpYyBpbnQgc3RyRmluZEFuZENvdW50KFN0cmluZyBnZHppZSwgU3RyaW5nIGNvKQogICAgewogICAgICAgIGludCBsaWN6bmlrV3lzdGFwaWVuID0gMDsKICAgICAgICBTdHJpbmdbXSB0YWJsaWNhU2xvdyA9IG5ldyBTdHJpbmdbMjAwXTsKICAgICAgICB0YWJsaWNhU2xvdyA9IGdkemllLnNwbGl0KCJcXHMrIik7CgogICAgICAgIGZvciAoaW50IGkgPSAwIDsgaSA8IHRhYmxpY2FTbG93Lmxlbmd0aDtpKyspCiAgICAgICAgewoKICAgICAgICAgICAgaWYodGFibGljYVNsb3dbaV0uY29udGFpbnMoY28pKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsaWN6bmlrV3lzdGFwaWVuKys7ICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9CgogICAgICAgIH0KICAgICAgICByZXR1cm4gbGljem5pa1d5c3RhcGllbjsKICAgIH0KCiAgICBwdWJsaWMgc3RhdGljIGludCBzdHJGaW5kQW5kQ291bnQyKFN0cmluZyBnZHppZSwgU3RyaW5nIGNvKQogICAgewogICAgCWlmIChjby5sZW5ndGgoKSA8PSAwIHx8IGdkemllLmxlbmd0aCgpIDwgY28ubGVuZ3RoKCkpIHsKICAgIAkJcmV0dXJuIDA7CiAgICAJfQogICAgCQogICAgICAgIGludCBsaWN6bmlrV3lzdGFwaWVuID0gMDsKICAgICAgICBpbnQgaWR4ID0gMDsKICAgICAgICAKICAgICAgICB3aGlsZShpZHggPj0gMCAmJiAoaWR4ICsgY28ubGVuZ3RoKCkgPD0gZ2R6aWUubGVuZ3RoKCkpKSB7CiAgICAgICAgCWlkeCA9IGdkemllLmluZGV4T2YoY28sIGlkeCk7CiAgICAgICAgCWlmIChpZHggPj0gMCkgewogICAgICAgIAkJbGljem5pa1d5c3RhcGllbisrOwogICAgICAgIAkJaWR4Kys7CiAgICAgICAgCX0gCiAgICAgICAgfQogICAgICAgIHJldHVybiBsaWN6bmlrV3lzdGFwaWVuOwogICAgfQogICAgCiAgICBzdGF0aWMgaW50IHN0ckZpbmRBbmRDb3VudDMoU3RyaW5nIHMsIFN0cmluZyBwKSB7CiAgICAgICAgaW50IGNudCA9IDA7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpIC0gcC5sZW5ndGgoKSArIDE7ICsraSkgewogICAgICAgICAgICBpZiAocy5zdWJTZXF1ZW5jZShpLCBpICsgcC5sZW5ndGgoKSkuZXF1YWxzKHApKQogICAgICAgICAgICAgICAgKytjbnQ7CiAgICAgICAgfQogICAgICAgIHJldHVybiBjbnQ7CiAgICB9CiAgICAKICAgIHByaXZhdGUgc3RhdGljIHZvaWQgdGVzdChpbnQgdGVzdElkLCBpbnQgbWV0aG9kSWQsIFN0cmluZyB0ZXh0LCBTdHJpbmcgcGF0dGVybiwgaW50IGV4cGVjdGVkKSB7CiAgICAgIGludCByZXN1bHQ7CiAgICAgIAogICAgICBpZiAobWV0aG9kSWQgPT0gMSkgewogICAgICAJcmVzdWx0ID0gc3RyRmluZEFuZENvdW50KHRleHQsIHBhdHRlcm4pOwogICAgICB9IGVsc2UgaWYgKG1ldGhvZElkID09IDIpIHsKICAgICAgCXJlc3VsdCA9IHN0ckZpbmRBbmRDb3VudDIodGV4dCwgcGF0dGVybik7CiAgICAgIH0JZWxzZSB7CiAgICAgIAlyZXN1bHQgPSBzdHJGaW5kQW5kQ291bnQzKHRleHQsIHBhdHRlcm4pOwogICAgICB9CiAgICAgIAogICAgICBpZiAocmVzdWx0ID09IGV4cGVjdGVkKSB7CiAgICAgIAlTeXN0ZW0ub3V0LnByaW50ZigiVGVzdCAlZCwgbWV0aG9kICVkOiBPSyVuIiwgdGVzdElkLCBtZXRob2RJZCk7CiAgICAgIH0gZWxzZSB7CiAgICAgIAlTeXN0ZW0ub3V0LnByaW50ZigiVGVzdCAlZCwgbWV0aG9kICVkOiBmYWlsZWQsIGV4cGVjdGVkOiAlZCwgcmVzdWx0OiAlZCVuIiwgdGVzdElkLCBtZXRob2RJZCwgZXhwZWN0ZWQsIHJlc3VsdCk7CiAgICAgIH0KICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHRlc3QoaW50IHRlc3RJZCwgU3RyaW5nIHRleHQsIFN0cmluZyBwYXR0ZXJuLCBpbnQgZXhwZWN0ZWQpIHsKICAgIAl0ZXN0KHRlc3RJZCwgMSwgdGV4dCwgcGF0dGVybiwgZXhwZWN0ZWQpOwogICAgCXRlc3QodGVzdElkLCAyLCB0ZXh0LCBwYXR0ZXJuLCBleHBlY3RlZCk7CiAgICAJdGVzdCh0ZXN0SWQsIDMsIHRleHQsIHBhdHRlcm4sIGV4cGVjdGVkKTsKICAgIH0KICAgIAoJcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBqYXZhLmxhbmcuRXhjZXB0aW9uCgl7CgkJdGVzdCgxLCAibWFtYSBtYSBrb3RhIiwgIm1hIiwgMyk7CgkJdGVzdCgyLCAibWFtYSBtYSBrb3RhIiwgIiIsIDApOwoJCXRlc3QoMywgIiIsICIiLCAwKTsKCQl0ZXN0KDQsICJtYW1hIiwgIm1hbWEiLCAxKTsKCQl0ZXN0KDUsICJtYSIsICJtYW1hIiwgMCk7CgkJdGVzdCg2LCAibWFtYSIsICJtIiwgMik7CgkJdGVzdCg3LCAibWFtYSwgbWFtbWEgbWlhIiwgIm1hIiwgNCk7CgkJdGVzdCg4LCAibWFhYSwgbWlhIiwgImFhIiwgMik7CiAgIH0KfQ==
stdout
Test 1, method 1: failed, expected: 3, result: 2
Test 1, method 2: OK
Test 1, method 3: OK
Test 2, method 1: failed, expected: 0, result: 3
Test 2, method 2: OK
Test 2, method 3: failed, expected: 0, result: 13
Test 3, method 1: failed, expected: 0, result: 1
Test 3, method 2: OK
Test 3, method 3: failed, expected: 0, result: 1
Test 4, method 1: OK
Test 4, method 2: OK
Test 4, method 3: OK
Test 5, method 1: OK
Test 5, method 2: OK
Test 5, method 3: OK
Test 6, method 1: failed, expected: 2, result: 1
Test 6, method 2: OK
Test 6, method 3: OK
Test 7, method 1: failed, expected: 4, result: 2
Test 7, method 2: OK
Test 7, method 3: OK
Test 8, method 1: failed, expected: 2, result: 1
Test 8, method 2: OK
Test 8, method 3: OK