题目
题目链接:
https://www.lintcode.com/problem/1856
思路
给定一个字符串s ss,求其有多少个不同的回文子串。
直接枚举中心,然后枚举所有以当前位置为中心的回文串,
加入一个哈希表中,最后返回哈希表的size即可
Java代码
public class Solution {
/**
* @param s: the string
* @return: the number of substring
*/
public int countSubstrings(String s) {
/*
给定一个字符串s ss,求其有多少个不同的回文子串。
直接枚举中心,然后枚举所有以当前位置为中心的回文串,加入一个哈希表中,最后返回哈希表的size即可
*/
int n= s.length();
Set<String> set = new HashSet<>();
for (int i = 0; i < n; i++) {
int L=i;
for (int j = 0; j <=1 ; j++) {
int R = L+j;
while (L>=0 && R<n && s.charAt(L)==s.charAt(R)){
set.add(s.substring(L,R+1));
L--;
R++;
}
L=i;
}
}
return set.size();
}
}