0

私は初心者の Java 開発者です。Java を使用して、段落内の回文語の数を数えるコードを書きたいと考えています。
ユーザーは、できるだけ多くの文を含む段落を入力できます。各単語は空白で区切られ、各文はピリオドで区切られます。単語の直前または直後の句読点は無視され、単語内の句読点はカウントされます。
サンプル入力:Otto goes to school. Otto sees a lot of animals at the pets store.
サンプル出力:Otto = 2 a = 1 Sees = 1

4

3 に答える 3

1

ファイルをプログラムに読み込み、すべてのスペースでエントリを分割し、それらを arraylist に入力します。その後、配列リストの各値に回文アルゴリズムを適用し、回文であった単語とその出現箇所を追跡します (たとえば、2D 配列、または両方の値を保持するオブジェクトを含む配列リスト)。

これらの手順を実行したら、ほぼ完了です。あなた自身の試みを示すと、おそらくより具体的なヘルプが表示されます。

于 2012-12-20T17:12:39.610 に答える
0

Javaでコレクションを使用すると、プログラミングの労力が軽減されます

アルゴリズム :

  1. 段落を文字列変数に読み取ります

  2. トークンを ' ' (スペース) として使用して文字列を分割し、StringTokenizer各単語を ArrayList に追加します (セットは重複を許可しません)。

  3. 指定された文字列が回文かどうかに基づいてブール値 (TRUE/FALSE) を返すメソッドを作成します。

  4. 回文文字列の値とそれが繰り返される回数を保持する Map を定義します。

  5. はいの場合は、キーを回文文字列として、値を回数としてマップに文字列を追加します。それ以外の場合は、文字列をマップに追加しません

  6. すべての単語が終了するまで同じロジックを繰り返します

サンプルコード:

` public class StringPalindromeCalculator {

   private Map<String, int> wordsMap = new HashMap<>();
   private List<String> wordsList = new ArrayLiat<>();

   private boolean isPalindrome(String inputString) {
      // write String palindrome logic here
   }

   public Map<String, int> findPalindromeWords(String completeString) {
       StringTokenizer wordTokenizer = new StringTokenizer(completeString, ' ');
       while(wordTokenizer.hasMoreTokens()) {
            wordsList.add(wordTokenizer.nextToken());
       }
       for(String word : wordsList) {
            if(isPalindrome(word)) {
                 if(wordsMap.containsKey(word)) {
                      // increment the value of word
                 }
            } else {
                    // put the word into Map and return the map value 
            }

       }
       return wordsMap;
   }  

}`

お役に立てれば :)

于 2012-12-20T17:29:12.453 に答える
0

public class 回文 {

int count = 0;

public static void main(String[] args) {
    String a = "malayalammadyoydaraarasdasdkfjasdsjhtj";
    Palindrome palindrome = new Palindrome();
    palindrome.countPalin(a);
}

private int countPalin(String str) {
    for (int i = 0; i < str.length() - 1; i++) {
        char start = str.charAt(i);
        String st = "";
        st += start;
        for (int j = i + 1; j < str.length(); j++) {

            st += str.charAt(j);

            StringBuffer rev = new StringBuffer(st).reverse();
            if (st.equals(rev.toString()) && st.length() > 1) {
                System.out.println(st.toString());
                count++;
            }
        }

        st = "";
    }

    System.out.println("Total Count : " + count);

    return count;
}

}

于 2013-01-22T07:39:41.507 に答える