FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
leetcode-algorithms/src/RotateString.java at master · anishLearnsToCode/leetcode-algorithms · GitHub
anishLearnsToCode
/
leetcode-algorithms
Public
Notifications
You must be signed in to change notification settings
Fork
17
Star
98
Code
Issues
0
Pull requests
0
Discussions
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Discussions
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
leetcode-algorithms
/
src
/
RotateString.java
Copy path
More file actions
More file actions
Latest commit
History
History
History
41 lines (38 loc) · 1.36 KB
Breadcrumbs
leetcode-algorithms
/
src
/
RotateString.java
Copy path
File metadata and controls
41 lines (38 loc) · 1.36 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
public
class
RotateString
{
public
boolean
rotateString
(
String
s
,
String
goal
) {
if
(
s
.
length
() !=
goal
.
length
())
return
false
;
if
(
s
.
equals
(
goal
) ||
s
.
length
() ==
0
)
return
true
;
return
patternExists
(
s
+
s
,
goal
);
}
private
boolean
patternExists
(
String
string
,
String
pattern
) {
return
kmpIndex
(
string
,
pattern
) != -
1
;
}
private
int
kmpIndex
(
String
string
,
String
pattern
) {
int
[]
patternPrefix
=
patternPrefixArray
(
pattern
);
for
(
int
t
=
0
,
p
=
0
;
t
<
string
.
length
() &&
p
<
pattern
.
length
() ; ) {
if
(
string
.
charAt
(
t
) ==
pattern
.
charAt
(
p
)) {
if
(
p
==
pattern
.
length
() -
1
)
return
t
-
p
;
p
++;
t
++;
}
else
if
(
p
!=
0
) {
p
=
patternPrefix
[
p
-
1
];
}
else
{
t
++;
}
}
return
-
1
;
}
private
int
[]
patternPrefixArray
(
String
pattern
) {
int
[]
patternPrefix
=
new
int
[
pattern
.
length
()];
for
(
int
j
=
0
,
i
=
1
;
i
<
pattern
.
length
() &&
j
<
pattern
.
length
() ; ) {
if
(
pattern
.
charAt
(
j
) ==
pattern
.
charAt
(
i
)) {
patternPrefix
[
i
++] =
j
++ +
1
;
}
else
if
(
j
==
0
) {
patternPrefix
[
i
++] =
0
;
}
else
{
j
=
patternPrefix
[
j
-
1
];
}
}
return
patternPrefix
;
}
}
Back
|
FazBrowse Home
|
New Git URL