如何比较两个不同字符串中的字符

可以说我有“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.

        }```


白衣非少年
浏览 146回答 3
3回答

慕盖茨4494581

如果你被允许使用额外的库,你应该看看谷歌的番石榴,特别com.google.common.collect.Multiset<E>是它的实现。您可以将每个字符串的字符放入一个Multiset<Character>(不是 Multiset,这是行不通的,因为 E 必须是引用类型,没有原始类型)。两个字符串都是变位词 if&nbsp;multiset1.equals(multiset2)。在这两个 for 循环中,在我看来,您只需要一个循环并对两个字符串使用相同的计数器?

眼眸繁星

将数组转换为 char 数组。然后按字母顺序对数组进行排序,然后逐个字符地比较它们。

慕勒3428872

String str = "abc"; char[] chars = str.toCharArray();&nbsp;您可以使用它来将字符串转换为 char 数组,接下来,通过运行一个简单的 if 条件并递增一个变量来区分单词,这将非常容易地循环 char 数组。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java