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

将文件读入您​​的程序,在每个空格处拆分条目并将它们输入到数组列表中。之后,将回文算法应用于数组列表中的每个值,并跟踪作为回文的单词及其出现(例如,二维数组,或包含两个值的对象的数组列表)。

完成这些步骤后,您应该就差不多了。一旦您展示了自己的尝试,可能会提供更具体的帮助。

于 2012-12-20T17:12:39.610 回答
0

公共类回文{

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 回答
0

在 Java 中使用 Collections 将减少编程工作量

算法 :

  1. 将段落读入字符串变量

  2. 使用标记作为''(空格)拆分字符串StringTokenizer并将每个单词添加到ArrayList(设置不允许重复)

  3. 编写一个根据给定字符串是否为回文返回布尔值(TRUE/FALSE)的方法。

  4. 定义一个 Map 来保存回文字符串的值和重复的次数。

  5. 如果是,则将字符串添加到 Map,键为回文字符串,值作为次数,否则不要将字符串添加到 Map

  6. 重复相同的逻辑,直到所有单词都说完

示例代码:

` 公共类 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 回答