1. 程式人生 > >java程式設計題:輸入一段英文,獲取每個單詞出現的次數跟位置,並排序

java程式設計題:輸入一段英文,獲取每個單詞出現的次數跟位置,並排序

給定的英文片段:

If someone loves a flower, of which just one single blossom grows in all the millions and millions of stars, it is enough to make him happy just to look at the stars. He can say to himself, "Somewhere, my flower is there…" But if the sheep eats the flower, in one moment all his stars will be darkened… And you think that
is not important.

實現程式碼如下:(參考網上程式碼,並進行了優化,再次記錄下,日後細嚼)

package mianshiti;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
import java.util.Map;

public class WordCounts {

    public static void main(String[] args) throws Exception {
        //System.out
.println("請輸入你要統計的字串:按回車確認"); int counter=0; String str1="If someone loves a flower, "+ " of which just one single blossom grows in all the millions and millions "+ "of stars, it is enough to make him happy just to look at the stars. He can say to himself,"
+ "\"Somewhere,my flower is there…\""+ " But if the sheep eats the flower,"+ "in one moment all his stars will be darkened… And you think that is not important."; /* String str2 = str1.replaceAll("[^(a-zA-Z)]"," "); String str3[] = str2.split(" "); for (int i = 0; i < str3.length; i++) { System.out.print(str3[i].toUpperCase()+" "); } System.out.println("\n---------------------------"); */ str1 = str1.toUpperCase().replaceAll("[^(a-zA-Z)]"," "); String str3[] = str1.split("\\b"); //記錄單詞 Map<String , Integer> map = new HashMap<String , Integer>(); //統計各個單詞出現的次數 for (String s1 : str3) { //將字串倆端的空格去掉 if(s1.trim().length()>0){ s1=s1.trim(); int count = str1.split("\\b"+s1.trim()+"\\b").length-1; map.put(s1, count); }else{ map.put("空格", counter++); } } System.out.println("\n----------單詞出現的次數分別為: ----------\n"); //單詞出現次數 for (String key : map.keySet()) { System.out.println(key+"出現:"+map.get(key)+"次"); } //把元素加入list中 List<String> list = new ArrayList<String>(); //將所有的key加入list中 list.addAll(map.keySet()); // 排序前 System.out.println("\n***********加入list後的完整輸出:**********\n"); ListIterator<String> it = list.listIterator(); while(it.hasNext()){ String str6 = it.next(); System.out.print(str6+" "); } System.out.println("\n"); System.out.println("\n------單詞出現的位置如下: ----------\n"); for (String s : list) { System.out.println(s+"出現的位置:"+list.indexOf(s)); } // 開始排序 System.out.println("\n按照出現次數降序排列(AESC):\n"); for (int i = 1; i < list.size(); i++) { for (int j = 0; j < list.size() - i; j++) { if (map.get(list.get(j)) > map.get(list.get(j+1))) { String tmp = list.get(j); list.set(j, list.get(j+1)); list.set(j + 1, tmp); } } } // 排序後 System.out.println("\n排序後:\n"); for (String s : list) { System.out.println(s+"出現次數:"+map.get(s)); } } }

執行結果:


----------單詞出現的次數分別為: ----------

THAT出現:1次
A出現:1次
ALL出現:2次
SOMEONE出現:1次
SINGLE出現:1次
BE出現:1次
SOMEWHERE出現:1次
THERE出現:1次
ONE出現:2次
BLOSSOM出現:1次
SHEEP出現:1次
SAY出現:1次
空格出現:65次
MAKE出現:1次
DARKENED出現:1次
JUST出現:2次
HIMSELF出現:1次
THE出現:4次
THINK出現:1次
HAPPY出現:1次
WHICH出現:1次
OF出現:2次
FLOWER出現:3次
IF出現:2次
ENOUGH出現:1次
BUT出現:1次
MOMENT出現:1次
MILLIONS出現:2次
IN出現:2次
IMPORTANT出現:1次
IS出現:3次
IT出現:1次
MY出現:1次
HIM出現:1次
GROWS出現:1次
CAN出現:1次
NOT出現:1次
AT出現:1次
HIS出現:1次
LOVES出現:1次
AND出現:2次
STARS出現:3次
WILL出現:1次
TO出現:3次
EATS出現:1次
LOOK出現:1次
HE出現:1次
YOU出現:1次

***********加入list後的完整輸出:**********

THAT A ALL SOMEONE SINGLE BE SOMEWHERE THERE ONE BLOSSOM SHEEP SAY 空格 MAKE DARKENED JUST HIMSELF THE
 THINK HAPPY WHICH OF FLOWER IF ENOUGH BUT MOMENT MILLIONS IN IMPORTANT IS IT MY HIM GROWS CAN NOT A
T HIS LOVES AND STARS WILL TO EATS LOOK HE YOU 


------單詞出現的位置如下: ----------

THAT出現的位置:0
A出現的位置:1
ALL出現的位置:2
SOMEONE出現的位置:3
SINGLE出現的位置:4
BE出現的位置:5
SOMEWHERE出現的位置:6
THERE出現的位置:7
ONE出現的位置:8
BLOSSOM出現的位置:9
SHEEP出現的位置:10
SAY出現的位置:11
空格出現的位置:12
MAKE出現的位置:13
DARKENED出現的位置:14
JUST出現的位置:15
HIMSELF出現的位置:16
THE出現的位置:17
THINK出現的位置:18
HAPPY出現的位置:19
WHICH出現的位置:20
OF出現的位置:21
FLOWER出現的位置:22
IF出現的位置:23
ENOUGH出現的位置:24
BUT出現的位置:25
MOMENT出現的位置:26
MILLIONS出現的位置:27
IN出現的位置:28
IMPORTANT出現的位置:29
IS出現的位置:30
IT出現的位置:31
MY出現的位置:32
HIM出現的位置:33
GROWS出現的位置:34
CAN出現的位置:35
NOT出現的位置:36
AT出現的位置:37
HIS出現的位置:38
LOVES出現的位置:39
AND出現的位置:40
STARS出現的位置:41
WILL出現的位置:42
TO出現的位置:43
EATS出現的位置:44
LOOK出現的位置:45
HE出現的位置:46
YOU出現的位置:47

按照出現次數降序排列(AESC):


排序後:

THAT出現次數:1
A出現次數:1
SOMEONE出現次數:1
SINGLE出現次數:1
BE出現次數:1
SOMEWHERE出現次數:1
THERE出現次數:1
BLOSSOM出現次數:1
SHEEP出現次數:1
SAY出現次數:1
MAKE出現次數:1
DARKENED出現次數:1
HIMSELF出現次數:1
THINK出現次數:1
HAPPY出現次數:1
WHICH出現次數:1
ENOUGH出現次數:1
BUT出現次數:1
MOMENT出現次數:1
IMPORTANT出現次數:1
IT出現次數:1
MY出現次數:1
HIM出現次數:1
GROWS出現次數:1
CAN出現次數:1
NOT出現次數:1
AT出現次數:1
HIS出現次數:1
LOVES出現次數:1
WILL出現次數:1
EATS出現次數:1
LOOK出現次數:1
HE出現次數:1
YOU出現次數:1
ALL出現次數:2
ONE出現次數:2
JUST出現次數:2
OF出現次數:2
IF出現次數:2
MILLIONS出現次數:2
IN出現次數:2
AND出現次數:2
FLOWER出現次數:3
IS出現次數:3
STARS出現次數:3
TO出現次數:3
THE出現次數:4
空格出現次數:65

相關推薦

java程式設計輸入英文獲取每個單詞出現次數位置排序

給定的英文片段: If someone loves a flower, of which just one single blossom grows in all the millions and millions of stars, it is enough

go語言面試題輸入英文字串找出重複出現次數最多的字母

package main import ( "bufio" "os" "fmt" "strings" ) func main() { reader := bufio.NewReader(os.Stdin) str, err := reader.

輸入顆二叉樹和一個整數打印出二叉樹中結點值的和為輸入整數的所有路徑。

原題:輸入一顆二叉樹和一個整數,打印出二叉樹中結點值的和為輸入整數的所有路徑。路徑定義為從樹的根結點開始往下一直到葉結點所經過的結點形成一條路徑。 思路分析:首先思考節點值的和為輸入的整數,每條路徑都一定是從根節點到葉子節點,在資料結構中從根節點到葉子節點的遍歷稱之為深度優先遍歷DFS。因此整

java程式設計打印出100以內的素數

/** * Java程式設計題:打印出100以內的素數(也稱質數) * * 素數又稱為質數,它指的是隻能被1和被自己整除的整數。其中,1不是素數,任何時候都不用考慮1。 * */ pu

Java程式設計將一個十六進位制的字串轉換成一個十進位制的整數

思路: 1.將字串轉換成一個一個的字元2.將字元轉換成十六進位制的數字 3.計算出結果 package test; public class Test { public static void main(String[] args) { String st

程式設計)數字規律

(一)陣列中出現次數超過一半的數字(如果不存在則輸出0)     假設不會出現0超過一半的情況;若有可以設定一個全域性的bool變數來檢查。  (1)解法一:利用map;鍵值為陣列中元素值,關聯值為數出現的次數 int MoreThanHalfNum_Solution(

Java 寫一個方法判斷一個字串是否對稱 "asdfgasdfg"、編寫一個程式將下面的文字中的各個單詞的字母順序翻轉

1、寫一個方法判斷一個字串是否對稱 "asdfgasdfg" public class Demo22 {public static void main(String[] args) {          String string="asdfgasdfg";        

給定字串每個單詞的字元順序倒置單詞間的順序不變。例如輸入字串“I love you”輸出“I evol uoy”。

#include <iostream> #include <sstream> using namespace std; //計算並返回字串長度 int Length(char *str) {     int length=0;     while((

C++經典題目二統計英文文章中的單詞個數

要求:統計處一篇英文文章中的不同的單詞,並得到單詞個數。 用一個單向連結串列儲存所出現的單詞,注意幾點:1)檔案輸入輸出;2)字串處理;3)連結串列資料結構 再看程式碼——演算法實現如下: //========================================

Python實現統計英文文章內每個單詞出現頻率的兩種很好解法

有一道Python面試題: 用python實現統計一篇英文文章內每個單詞的出現頻率,並返回出現頻率最高的前10個單詞及其出現次數。檔案的內容,就拷貝import this模組中的內容,檔名為: this.txt The Zen of Python, by Tim Peters Beauti

程式設計--給定一個字串陣列判斷每個字元出現次數

題目要求:給定一個字串陣列,判斷每個字元出現多少次? 解決思路:利用Map的特性:即Map集合中如果兩個key(鍵)值是一樣相同的,那麼,後放(put)入的值會將前面存在的value(值)替換掉,也就是覆蓋了前面的value。 所以把字元陣列中的字元當作ke

Java版統計文件中的每個單詞出現次數

ack ioe .cn style pri .html key red reg 正則表達式之Pattern和Matcher,請參見轉載博客 http://www.cnblogs.com/haodawang/p/5967219.html 代碼實現: 1 import

Java給定一個字串陣列判斷每個字元出現次數

題目要求:給定一個字串,判斷每個字元出現多少次? 解決思路:利用Map的特性:即Map集合中如果兩個key(鍵)值是一樣相同的,那麼,後放(put)入的值會將前面存在的value(值)替換掉,也就是覆蓋了前面的value。 package com.zhj.www; impor

#Java程式設計師面試碰到程式碼線上等解答!網友看不懂

作為一名程式設計師,想要有高深的技術,那麼良好的邏輯思維能力是不可或缺的!很多企業在面試程式設計師的時候,都會出一些面試題來測試面試者,看看他們技術和邏輯能力能不能達到入職的標準,其實這些題不算太難,只要有一些相關的經驗,也是可以答到關鍵點上! 如果有想學習java的程式設計師,可來我們的jav

JAVA程式設計】現在輸入n個數字以逗號分開;然後可選擇升或者降序排序;按提交鍵就在另頁面顯示按什麼排序結果為提供reset

現在輸入n個數字,以逗號,分開;然後可選擇升或者降序排序;按提交鍵就在另一頁面顯示按什麼排序,結果為,提供reset import java.util.*; public class bycomma{

JAVA程式設計(初級)輸入10個整數排序後輸出。

package Jiangli; /* * 1.題目描述:輸入10個整數,對它進行排序輸出 * 2.分析:第一輪:第一個數分別和剩下的9個數比較;第二輪:第二個數分別和剩下的8個數比較,後面依此類推 * 排序時用兩個for迴圈,第一個for用來控制輪數,

CCF2018.3 第一跳 (Java程式碼)

問題描述   近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。   簡化後的跳一跳規則如下:玩家每次從當前方塊跳到下一個方塊,如果沒有跳到下一個方塊上則遊戲結束。   如果跳到了方塊上,但沒有跳到方塊的中心則獲得1分;跳到方塊中心時,若上一次的得分為1分或這是本局遊戲的第一次跳躍則此次得分為

第四輸入某年某月某日判斷這天是這年的第幾天?

#輸入某年某月某日,判斷這一天是這一年的第幾天? '''思路:首先年月日是分著輸入還是一塊輸入,想到如果一塊輸入可能還需要分割分別找到年月日 所以還是分著輸入比較好;接著考慮計算天數其實就是往常月份的天數和加上本月天數(如:7月5號就是前6個月天數之和加上5) 那麼接下來的