我是一名新手 Java 开发人员。我想编写代码来使用 Java 计算段落中回文词的数量。
假设是:用户可以输入包含尽可能多的句子的段落。每个单词用空格隔开,每个句子用句点隔开,单词前后的标点将被忽略,而单词内部的标点将被计算在内。
样本输入:Otto goes to school. Otto sees a lot of animals at the pets store.
样本输出:Otto = 2 a = 1 Sees = 1
问问题
3701 次
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 将减少编程工作量
算法 :
将段落读入字符串变量
使用标记作为''(空格)拆分字符串
StringTokenizer
并将每个单词添加到ArrayList(设置不允许重复)编写一个根据给定字符串是否为回文返回布尔值(TRUE/FALSE)的方法。
定义一个 Map 来保存回文字符串的值和重复的次数。
如果是,则将字符串添加到 Map,键为回文字符串,值作为次数,否则不要将字符串添加到 Map
重复相同的逻辑,直到所有单词都说完
示例代码:
` 公共类 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 回答