2015-08-05 5 views
-2

Я просто хотел бы спросить, что не так в отношении моего кода, потому что это не выводит, что 2 слова являются анаграммой. Цените любую благодарность за помощь.Сравните, если 2 строки являются анаграммами друг другу

общественного класса {Программа

public static void main(String[] args){ 
    String word1 ="test"; 
    String word2 = "tset"; 
    boolean output = isAnagram(word1,word2); 
    System.out.println("isAnagram:"+output); 
} 

public static boolean isAnagram(String word1, String word2){ 
     boolean output = false; 
     boolean found = false; 
     int x = 0; 
     int ctr = 0; 
      for(int i=0; i<word1.length()-1;i++){ 

      x=0; 
      found=false; 

      while(found!=true){ 
       if(word1.charAt(x)==word2.charAt(i)){ 
        ctr++; 
        found=true; 
       } 

       else{ 

        x++; 
       } 
      }} 
     if(ctr==word1.length()&&ctr==word2.length()){ 
      output = true; 
     } 
     return output; 
    }} 
+0

возможно дубликат [алгоритма Anagram в Java] (http://stackoverflow.com/questions/13692221/anagram-algorithm-in-java) – ka4eli

+1

Мы здесь не угадывать, что может быть не так с вашим кода, особенно если вас не беспокоит, чтобы объяснить, КАК оно работает неправильно. –

+0

[Похоже, у этого вопроса есть то, что вы ищете] (http://stackoverflow.com/questions/15045640/how-to-check-if-two-words-are-anagrams) – fear7

ответ

0
public static boolean isAnagram(String word1, String word2){ 

    boolean isAnagram = false; 
    int x = 0; 
    int ctr = 0; 
    if(word1.length() == word2.length()){ 
    int n = 0; 
    for(int c = word2.length(); c > 0 && n < word2.length() , c++){ 
if(word1.charAt(n).equals(word2.charAt(c))){ 
x++; 
} 
n++; 
} 
if(x == word1.length()) 
isAnagram == true; 
} 
    return isAnagram; 
}} 

это занимает первые и последние буквы или символы и отсчитывает на второй и рассчитывает на второй.

+0

прокомментируйте, если это не так. Это работало для меня раньше. –

Смежные вопросы