【发布时间】:2021-02-07 09:49:27
【问题描述】:
嗨,我想用 java 写字谜算法。我的要求是如果有人给了这样的字符串
Input: "aa aa odg dog gdo" 它的字谜计数应该是 2。谁能帮我解决这个问题?
我尝试了一个解决方案,但它不起作用。
public static void main(String[] args) {
String text = "a c b c run urn urn";
String word = "urn";
System.out.print(countAnagrams(text, word));
}
static boolean araAnagram(String s1,
String s2)
{
char[] ch1 = s1.toCharArray();
char[] ch2 = s2.toCharArray();
Arrays.sort(ch1);
Arrays.sort(ch2);
if (Arrays.equals(ch1, ch2))
return true;
else
return false;
}
static int countAnagrams(String text, String word)
{
int N = text.length();
int n = word.length();
int res = 0;
for (int i = 0; i <= N - n; i++) {
String s = text.substring(i, i + n);
if (araAnagram(word, s))
res++;
}
return res;
}
这个程序不符合我的要求 请帮忙。
【问题讨论】:
-
aa aa odg dog gdo在这里,您找到的字谜词是什么?什么不起作用? -
@Eklavya-UpvoteDon'tSayThanks 例如:如果字符串是“cars are very cool so are arcs and my os”,那么您的程序应该返回 2,因为“cars”和“arcs”形成 1 个字谜“so”和“os”构成第二个字谜。 “are”这个词在字符串中出现了两次,但它不是一个字谜,因为它只是重复的同一个词。我想改变上面的程序以适应这个而不是传递两个字符串。
-
为什么输入
"aa aa odg dog gdo"应该返回 2 个字谜?根据您的评论,aa重复了两次,因此不应算作字谜。