Skip to content

Commit b65094e

Browse files
committed
Finded the longest palindromic substing. But in the ranking list of leetcode, my code almost cost 10 times time than the ahead code
1 parent 3d8b38e commit b65094e

File tree

5 files changed

+69
-4
lines changed

5 files changed

+69
-4
lines changed
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,12 @@ fun main(args: Array<String>) {
3333
class Solution {
3434
fun lengthOfLongestSubstring(s: String): Int {
3535
val subStrings = ArrayList<StringBuilder>()
36-
3736
var strBuf = StringBuilder()
3837
subStrings.add(strBuf)
39-
4038
s.forEach {
4139
if (strBuf.contains(it)) {
4240
val newBuf = StringBuilder()
4341
val repeatIndex = strBuf.indexOf(it)
44-
4542
if (repeatIndex + 1 < strBuf.length) {
4643
newBuf.append(strBuf.substring(repeatIndex+1))
4744
}
@@ -51,7 +48,6 @@ class Solution {
5148
strBuf.append(it)
5249
}
5350
strBuf = subStrings.maxBy { it.length }!!
54-
println("The answer is $strBuf, with the length of ${strBuf.length}. ")
5551
return strBuf.length;
5652
}
5753
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package leetcode
2+
3+
/**
4+
*
5+
* Created by 98620 on 2018/10/24.
6+
*/
7+
class Solution5 {
8+
fun longestPalindrome(s: String): String {
9+
if (s.isEmpty())
10+
return ""
11+
var maxLength = 0
12+
var maxPalStr = s[0].toString()
13+
var tempStr: String
14+
var elementNum: Int
15+
for (i in 0 until s.length - 1) {
16+
tempStr = s.substring(i)
17+
elementNum = tempStr.count { it == s[i] }
18+
for (j in 2..elementNum) {
19+
val index3 = indexOfSpecificTimesChar(tempStr, s[i], j)
20+
if (isPalindrome(tempStr.substring(0, index3 + 1)))
21+
if (index3 + 1 > maxLength) {
22+
maxLength = index3 + 1
23+
maxPalStr = tempStr.substring(0, index3 + 1)
24+
}
25+
}
26+
}
27+
28+
return maxPalStr
29+
}
30+
31+
32+
private fun isPalindrome(str: String): Boolean {
33+
if (str.isEmpty()) {
34+
return false
35+
}
36+
for (i in 0 until str.length / 2) {
37+
if (str[i] != str[str.length - 1 - i])
38+
return false
39+
}
40+
return true
41+
}
42+
43+
private fun indexOfSpecificTimesChar(s: String, ch: Char, specificTimes: Int): Int {
44+
var tempTimes = 0
45+
var index = -1
46+
for (i in 0 until s.length) {
47+
if (s[i] == ch) {
48+
tempTimes++
49+
50+
if (tempTimes == specificTimes) {
51+
index = i
52+
break
53+
}
54+
}
55+
}
56+
return index
57+
}
58+
59+
}
60+
61+
62+
fun main(args: Array<String>) {
63+
// println(Solution5().longestPalindrome("cbbdaaaa"))
64+
// println(Solution5().longestPalindrome("babad"))
65+
println(Solution5().longestPalindrome("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabcaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))
66+
//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
67+
// println(Solution5().indexOfSpecificTimesChar("cbbdaaaa", 'a', 4))
68+
// println("adssadasdsa".count { it == 'a' })
69+
}

0 commit comments

Comments
 (0)