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

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

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

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

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

算法:

  1. 将段落读取为String变量

  2. 使用StringTokenizer使用token作为”(空格)拆分String并将每个单词添加到ArrayList(Set不允许重复)

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

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

  5. 如果是,则将字符串添加到Map,使用key作为palindrome字符串,将值作为次数添加,否则不将字符串添加到Map

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

示例代码:

`public class StringPalindromeCalculator {

  private Map wordsMap = new HashMap<>(); private List wordsList = new ArrayLiat<>(); private boolean isPalindrome(String inputString) { // write String palindrome logic here } public Map 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; } 

}`

希望这可以帮助 :)

公共类Palindrome {

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

}