排序Anagrams

时间:2012-04-05 11:48:37

标签: java

我应该编写一个算法,从给定的单词集中挑选出字谜。到目前为止我得到了这个

package Tutorial5;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStreamReader; 


public class Anagrams {

    /**
     * @param args
     */
    public static void main(String[] args) {

        try{
            FileInputStream fis = new FileInputStream("src/Tutorial5/words"); //locate and open the txt.file

            DataInputStream dis = new DataInputStream(fis); //get the words from the txt.file

            BufferedReader br = new BufferedReader(new InputStreamReader(dis));

            String SLine;


            while ((SLine = br.readLine()) != null) //read the txt.file line by line
            {
                System.out.println(SLine); //print out the words
        }

        dis.close(); //close the DataInputStream

    }
        catch (Exception e) //see if there is any exception to catch
        {
            System.err.println("Error: " + e.getMessage());
        }

}
}

任何人都可以帮帮我吗?我正在努力解决排序问题。我不知道如何使用我得到的代码并将其转换为字符串并将其分类为字谜。

3 个答案:

答案 0 :(得分:0)

Vector<String> strings = new Vector<String>();
while ((SLine = br.readLine()) != null) //read the txt.file line by line
{
    strings.add(SLine);
    System.out.println(SLine); //print out the words
}

现在,您可以使用Vector中的String来对它们进行排序。 将您的排序算法创建为单独的函数:

void sortStrings(Vector<String> strings) {
// ...
}

如何进行实践分类,你可以自己找到,有很多东西可以使用:What function can be used to sort a Vector?

答案 1 :(得分:0)

如果你这样想的话,找出两个单词是否是字谜并不是那么复杂:只要两个字符串都有相同的长度和相同的字母,它们就是字谜。

因此,您需要编写一个接收两个字符串的方法,对这些字符串进行排序,并检查它们是否在同一索引上具有相同的值。在代码中,它将是类似的东西:

  public boolean isAnagram(String str1, String str2) {
     if (str1.length() != str2.length()) 
         return false; // can't be an anagram since not equal length
     for (int i = i<str1.length;i++) { // loop thru the string
        if (str1.charAt(i) != str2.charAt(i)) // is the char at index i in str1 not equal to char at the same index in str2?
            return false;
         }
      return true;

请注意,为了使这个方法起作用,字符串需要排序,不应包含空格等。由于这是作业,我将把这项工作留给你做:)

答案 2 :(得分:0)

如何将所有字符串放入数组列表而不是对数组列表进行排序。 当你打印添加到数组列表然后对它进行排序..简单编码..