【发布时间】:2020-07-19 16:39:33
【问题描述】:
问题描述:https://www.hackerrank.com/challenges/sherlock-and-anagrams
我只得到了几个正确的测试用例。我的算法是:
- 查找给定字符串的所有子字符串。
- 使用每个字母的数组为每个子字符串创建代码。
- 将该代码转换为字符串并使用哈希映射映射该字符串。
- 如果子字符串的映射值包含非零值,则增加结果。
我的代码:
static int sherlockAndAnagrams(String s) {
HashMap<String,Integer> map = new HashMap<String,Integer>();
int d,i,k=0;
int length = s.length();
int n = length*(length+1)/2;
String []sub = new String[n];
for (d = 0; d < length; d++){
for(i = d+1; i <= length; i++)
{
sub[k++] = s.substring(d, i);
}
}
int []c = new int[26];
int result=0;;
for(int l=0;l<n;l++){
for(int m=0;m<25;m++){
c[m] = 0;
}
char []suba = sub[l].toCharArray();
for(char ch : suba){
c[ch-'a']+=1;
}
String temp = Arrays.toString(c);
Integer x = map.get(temp);
if(x!=null){
result = result+x;
map.put(temp,++x);}
else{
map.put(temp,1);
}
}
return result;
}
【问题讨论】:
-
请不要包含文字会更好的图片。解释问题和示例文本。
-
@NomadMaker 实际上我包含了初始图片,否则我们将不得不进行大量格式化。
-
@ankit715 你必须计算对而不是有多少碰撞。另外,map.put(...,x++) 应该是 map.put(...,++x);
-
@vivek_23 “大量格式化”不是包含图片的借口。规则是能写就写。
-
@vivek_23 是的,它成功了!但仍然有 7 个测试用例中有 2 个失败。
标签: java algorithm hashmap substring anagram