0

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

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());
        }

}
}

谁能帮帮我?我在分类部分苦苦挣扎。我不知道如何使用我得到的这段代码并将其转换为字符串并将其排序为字谜。

4

3 回答 3

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;

请注意,要使此方法起作用,需要对字符串进行排序并且不应包含空格等。由于这是家庭作业,因此我将把这项工作留给您做:)

于 2012-04-05T12:10:51.293 回答
0

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

于 2012-04-05T16:17:19.750 回答
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
}

现在你有一个向量中的字符串,你可以用它来对它们进行排序。将您的排序算法创建为单独的函数:

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

如何进行实际排序,你可以自己找到,有很多东西可用:什么函数可以用来对向量进行排序?

于 2012-04-05T11:56:00.283 回答