如何计算java中相同(PALINDROME)的单词数

时间:2012-12-20 17:08:08

标签: java palindrome

我是一名新手Java开发人员。我想编写代码来使用Java计算段落中回文词的数量 假设是:用户可以输入包含尽可能多句子的段落。每个单词用空格分隔,每个句子用句点分隔,单词前后的标点符号将被忽略,而单词中的标点符号将被计算。
  样本输入:Otto goes to school. Otto sees a lot of animals at the pets store.
  示例输出:Otto = 2 a = 1 Sees = 1

3 个答案:

答案 0 :(得分:1)

将文件读入您​​的程序,在每个空格中分割条目并将其输入到arraylist中。然后,将你的回文算法应用到你的arraylist中的每个值,并跟踪回文及其出现的单词(例如2D数组,或带有同时包含两个值的对象的arraylist)。

当你按照这些步骤进行操作时,你应该在那里。一旦你展示了自己的尝试,可能会给出更具体的帮助。

答案 1 :(得分:0)

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

算法:

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

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

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

  4. 定义一个Map来保存回文的值及其重复的次数。

  5. 如果是的话       将String添加到Map,使用key作为回文String,将值作为次数添加 其他       不要将字符串添加到地图

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

  7. 示例代码:

    `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;
       }  
    

    }`

    希望这有助于:)

答案 2 :(得分: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;
}

}