2014-11-21 4 views
0

Я мог бы использовать txt-файл или войти через класс Scanner (который, вероятно, буду использовать), но мне нужно сравнить строки и проверить, содержат ли они одни и те же символы. Если повторяющихся символов все равно будет, например, abc и aaabbbccc будет одинаковым.Проверьте, содержит ли пара строк одни и те же символы?

+0

только те же символы или может abc = aabbbcccdddeee? – brso05

+2

Поместите символы из обеих строк, чтобы отделить 'Set ' и сравнить их содержимое. – Pshemo

+0

только те же символы. abc = aaabbbcccddee будет считаться другим. – user3247712

ответ

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 для сравнения 2 строки для одних и тех же символов.

+0

Я назвал это в своем основном методе, но я хочу вернуть что-то вроде «Обе строки одинаковы», а не просто true или false, мне нужно установить тип возвращаемого значения как String? – user3247712

+0

Да, я отредактирую, чтобы вы могли увидеть, как это сделать ... – brso05

+0

@ user3247712 вот ты и я редактировал его, чтобы вернуть строковое сообщение ... – brso05

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> следить за подсчеты.

Чтобы сделать ответ кратким, я использовал Guava, но идея явно не зависит от методов Guava.

0

С быстрый поиск по переполнению стека, я получил это Удалить дубликаты символов -> сортировки -> проверить, если они такие же

государственной статической силы основных (String [] арг) {

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(); 
} 
Смежные вопросы