1 // Copyright 2015 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 // -build !amd64,!s390x
9 // TODO: implements short string optimization on non amd64 platforms
10 // and get rid of strings_amd64.go
12 // Index returns the index of the first instance of substr in s, or -1 if substr is not present in s.
13 func Index(s
, substr
string) int {
19 return IndexByte(s
, substr
[0])
29 hashss
, pow
:= hashStr(substr
)
31 for i
:= 0; i
< n
; i
++ {
32 h
= h
*primeRK
+ uint32(s
[i
])
34 if h
== hashss
&& s
[:n
] == substr
{
37 for i
:= n
; i
< len(s
); {
40 h
-= pow
* uint32(s
[i
-n
])
42 if h
== hashss
&& s
[i
-n
:i
] == substr
{
49 // Count counts the number of non-overlapping instances of substr in s.
50 // If substr is an empty string, Count returns 1 + the number of Unicode code points in s.
51 func Count(s
, substr
string) int {
52 return countGeneric(s
, substr
)