可以说我有“jfk”和“jfc”。我想遍历两个字符串并找出它们是否不同以及它们在哪里不同。我想看看这些字符串是否是字谜。“新门”和“一个字”是变位词。如果它不是字谜,我希望代码通过字符串不同的字符数来告诉我。jfk 和 jfc 相差 1。“macd”和“mebc”相差 2,它们不能是变位词。如果这两个字符串的长度不同,那么它们就不可能是变位词。我尝试遍历字符串,但那是我卡住的时候。我不知道如何同时遍历两个字符串并找出它们是否因某些字符而不同。我只检查了两个字符串的长度是否相同。 static void isAnagram(List <String> s1, List <String> s2) { if (s1.length() != s2.length()) { System.out.println("Not anagrams"); } else { for(int i = 0; i < s1.length(); i++) { for(int j = 0; j < s2.lenth(); j++) {//i know that iterating through both strings like this does not make sense but i am stuck. }```
3 回答
慕盖茨4494581
TA贡献1850条经验 获得超11个赞
如果你被允许使用额外的库,你应该看看谷歌的番石榴,特别com.google.common.collect.Multiset<E>
是它的实现。您可以将每个字符串的字符放入一个Multiset<Character>
(不是 Multiset,这是行不通的,因为 E 必须是引用类型,没有原始类型)。两个字符串都是变位词 if multiset1.equals(multiset2)
。
在这两个 for 循环中,在我看来,您只需要一个循环并对两个字符串使用相同的计数器?
慕勒3428872
TA贡献1848条经验 获得超6个赞
String str = "abc";
char[] chars = str.toCharArray();
您可以使用它来将字符串转换为 char 数组,接下来,通过运行一个简单的 if 条件并递增一个变量来区分单词,这将非常容易地循环 char 数组。
添加回答
举报
0/150
提交
取消