让我们说我有“ 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.
}```
答案 0 :(得分:1)
将数组转换为char数组。然后,按字母顺序对数组进行排序,然后逐个字符进行比较。
答案 1 :(得分:0)
String str = "abc";
char[] chars = str.toCharArray();
您可以使用它来将字符串转换为char数组,然后通过运行一个简单的if条件并增加一个变量来区分单词的差异,这将非常容易循环char数组。
答案 2 :(得分:0)
如果允许您使用其他库,则应查看Google的Guava,尤其是com.google.common.collect.Multiset<E>
及其实现。您可以将每个字符串的字符放入Multiset<Character>
中(不是Multiset,它将不起作用,因为E必须是引用类型,不能是原始类型)。如果为multiset1.equals(multiset2)
,则两个字符串都是字谜。
在两个for循环中,我似乎只需要一个循环,并且对两个字符串使用相同的计数器?