2014-11-21 194 views
0

我可以使用txt文件或通过Scanner类(我可能会使用)输入,但我需要比较字符串并检查它们是否包含相同的字符。如果有重复的字符,它仍然是真实的,例如,abcaaabbbccc将是相同的。检查一对字符串是否包含相同的字符?

+0

- >排序相同的字符或可能abc = aabbbcccdddeee? – brso05 2014-11-21 19:31:11

+2

将两个字符串中的字符分开,并将其设置为'Set '并比较它们的内容。 – Pshemo 2014-11-21 19:31:26

+0

只有相同的字符。 abc = aaabbbcccddee会被认为是不同的。 – user3247712 2014-11-21 19:36:30

回答

0

你可以做这样的事情:

//just call the checkChars method with 2 strings and it will check both strings to make sure 
//that all the characters are contained in both strings. 

public static void main(String args[]) { 
     String test = "abc"; 
     String test1 = "abcaaabbc"; 
     System.out.println("" + checkChars(test, test1)); 
    } 
    public static String checkChars(String string1, String string2) 
    { 
     boolean isContained = false; 
     char[] char1 = string1.toCharArray(); 
     char[] char2 = string2.toCharArray(); 
     for(int i = 0; i < char1.length; i++) 
     { 
      isContained = false; 
      for(int j = 0; j < char2.length; j++) 
      { 
       if(char1[i] == char2[j]) 
       { 
        isContained = true; 
        break; 
       } 
      } 
      if(isContained == false) 
      { 
       break; 
      } 
     } 
     if(isContained == true) 
     { 
      for(int i = 0; i < char2.length; i++) 
      { 
       isContained = false; 
       for(int j = 0; j < char1.length; j++) 
       { 
        if(char2[i] == char1[j]) 
        { 
         isContained = true; 
         break; 
        } 
       } 
       if(isContained == false) 
       { 
        break; 
       } 
      } 
     } 
     if(isContained) 
     { 
      return "Both strings contain the same characters."; 
     } 
     else 
     { 
      return "The strings have different characters."; 
     } 
    } 

可以使用checkChars方法用于比较两个字符串为相同的字符。

+0

我在我的主要方法中调用它,但我想要返回像“两个字符串是相同的”而不是只是true或false,我是否需要将返回类型设置为一个字符串? – user3247712 2014-11-21 20:12:16

+0

是的,我会编辑,所以你可以看到如何做到这一点... – brso05 2014-11-21 20:18:18

+0

@ user3247712你去了我编辑它返回一个字符串消息... – brso05 2014-11-21 20:20:12

0

既然你不担心字符数,你的问题比一个更常见的问题要简单得多:anagrams。作为Pshemo的评论指出,使用Set S:

boolean hasSameChars(String s, String t) { 
    Set<Character> sChars = new HashSet<Character>(Chars.asList(s.toCharArray()); 
    Set<Character> tChars = new HashSet<Character>(Chars.asList(t.toCharArray()); 
    return sChars.equals(tChars); 
} 

如果你想检查的字符数也是两个字符串相同,然后用Map<String, Integer>Multiset<String>跟踪计数。

为了使答案简明扼要,我使用了番石榴,但这个想法显然独立于番石榴的方法。

0

随着堆栈溢出快速搜索,我得到这个 删除重复的字符 - 仅>检查它们是否相同

公共静态无效的主要(字串[] args){

String s1 = "abc"; 
    String s2 = "aaabbbccc"; 

    System.out.println(check(dupRemove(s1), dupRemove(s2))); 

} 
static boolean check(String a, String b){ 
    char[] c1 = a.toCharArray(); 
    char[] c2 = b.toCharArray(); 

    Arrays.sort(c1); 
    Arrays.sort(c2); 

    return Arrays.equals(c1, c2); 

} 
static String dupRemove(String s){ 

    StringBuilder clean = new StringBuilder(); 
    for (int i = 0; i<s.length(); i++){ 
     String j = s.substring(i, i + 1); 
     if(clean.indexOf(j)==-1){ 
      clean.append(j); 
     } 
    } 
    return clean.toString(); 
} 
相关问题