我是一名新手Java开发人员。我想编写代码来使用Java计算段落中回文词的数量
假设是:用户可以输入包含尽可能多句子的段落。每个单词用空格分隔,每个句子用句点分隔,单词前后的标点符号将被忽略,而单词中的标点符号将被计算。
样本输入:Otto goes to school. Otto sees a lot of animals at the pets store.
示例输出:Otto = 2 a = 1 Sees = 1
答案 0 :(得分:1)
将文件读入您的程序,在每个空格中分割条目并将其输入到arraylist中。然后,将你的回文算法应用到你的arraylist中的每个值,并跟踪回文及其出现的单词(例如2D数组,或带有同时包含两个值的对象的arraylist)。
当你按照这些步骤进行操作时,你应该在那里。一旦你展示了自己的尝试,可能会给出更具体的帮助。
答案 1 :(得分:0)
在java中使用Collections将减少编程工作量
算法:
将段落读入字符串变量
使用StringTokenizer
使用标记作为''(空格)拆分字符串,并将每个单词添加到ArrayList(设置不允许重复)
编写一个方法,根据给定的String是否为回文,返回布尔值(TRUE / FALSE)。
定义一个Map来保存回文的值及其重复的次数。
如果是的话 将String添加到Map,使用key作为回文String,将值作为次数添加 其他 不要将字符串添加到地图
重复相同的逻辑,直到所有单词都完成
示例代码:
`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;
}
}