与具有相同字符或字母的字符串进行比较

时间:2014-03-05 08:43:41

标签: java string

我是Java编程的新手,最近开始从事字符串操作 任何人都可以建议我一个工作的想法来检查字符串是否包含相同的字符集?

示例:

string1="add" so string1 has characters "a,d"
string2="dad" so string2 has characters "a,d"
--> they match

String1="abc"
string2="abcd"
--> they don't match

我不希望逐字逐句比较

2 个答案:

答案 0 :(得分:4)

听起来你正试图检查一个字符串中包含的字符集是否与另一个字符串中包含的字符集相同。使用Set<Character>

可以轻松实现这一目标
static boolean characterSetsEqual(String text1, String text2) {
    Set<Character> set1 = toCharacterSet(text1);
    Set<Character> set2 = toCharacterSet(text2);
    return set1.equals(set2);
}

static Set<Character> toCharacterSet(String input) {
    Set<Character> set = new HashSet<>();
    for (int i = 0; i < input.length(); i++) {
        set.add(input.charAt(i));
    }
    return set;
}

Set<>.equals的定义与您希望的完全相同:

  

将指定对象与此集进行相等性比较。如果指定的对象也是一个集合,则返回true,两个集合具有相同的大小,并且指定集合的​​每个成员都包含在此集合中(或者等效地,此集合的每个成员都包含在指定的集合中)。此定义确保equals方法在set接口的不同实现中正常工作。

重要的是要看到你真的对感兴趣 - 从String(这是一系列字符)转换为Set<Character>(其中包含没有固有的顺序,也没有计算每个角色出现的次数是关键部分。

答案 1 :(得分:0)

这是一个简单的库,可以帮助您对begening的字符串进行基本操作,还请查看String类文档,还有许多有用的东西。