iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 10
0
自我挑戰組

資工的日常系列 第 10

CPE 考題 Deli Deli

  • 分享至 

  • xImage
  •  

前言:感覺一直發CPE考題會有點膩,原本要弄python的讀檔的可是一直搞不懂。昨天發的BootStrap Button似乎太簡單了,都沒人看XD。希望明天能發一個python。

題目:https://uva.onlinejudge.org/external/112/p11233.pdf

大概題意:plural就是複數形,ex:strawberry->strawberries。題目的前兩段都是廢話,直接從題目的第一點If開始看就好。總之,這題就是把各種英文名詞轉成複數形態。
If the word is in the list of irregular words replace it with the given plural.
如果屬於不規則的類型字,就替換成input給的複數形態。ex:fish->fish。其他,y->ies,o,s,ch,sh,x->加es。一般的話就是+s。

input:
第一行:
L N。L是這題給的不規則單字有幾個,N是要處理轉成複數形態的單字數。
有不規則單字L行 ex:rice rice,就把讀到是rice的字直接印出rice。
要處理N個單字轉成複數形態。

output:
N個複數型態單字。

程式碼:

import java.util.Scanner;

public class DeliDeli {

	public static void main(String[] args) {
		int L,N;
		//irregular words Array
		String[] IRfrom,IRto,tempArr;
		String temp;
		Scanner scanner=new Scanner(System.in);
		//讀入irregular words的數量及case數
		L=scanner.nextInt();
		N=scanner.nextInt();
		boolean done;
		//產生實體陣列
		IRfrom=new String[L];
		IRto=new String[L];
		//scanner讀兩個數字後有個"Enter",讀一行讓他過去
		scanner.nextLine();
		//L為irregular words的個數,此行讀入irregular words
		for(int i=0;i<L;i++){
			//切割用陣列
			tempArr=scanner.nextLine().split(" ");
			IRfrom[i]=tempArr[0];
			IRto[i]=tempArr[1];
		}
		//處理要印出的case
		for(int i=0;i<N;i++){
			//done 印出過後為true
			done=false;
			//讀這行要處理的String
			temp=scanner.next();
			for(int j=0;j<L;j++){
				//有符合irregular words的話就印出對應的word
				if(temp.equals(IRfrom[j])){
					System.out.println(IRto[j]);
					//印出後done為true
					done=true;
					break;
				}
			}
			//除了用goto外,不知道怎麼一行continue外面第二層的迴圈,這邊用boolean判斷有無印出
			if(done){continue;}
			//如果字尾是"y"的話會回傳true
			if(temp.endsWith("y")){
				//利用substring只截到最後一個字前,再用concat接ies連起來並印出。
				System.out.println(temp.substring(0, temp.length()-1).concat("ies"));
				continue;
			}
			//如果字尾是以下這幾個的話...
			if(temp.endsWith("o")||temp.endsWith("s")||temp.endsWith("ch")||temp.endsWith("sh")||temp.endsWith("x")){
				//concat接"es"印出
				System.out.println(temp.concat("es"));
				continue;
			}
			//以上皆沒觸發的話,就直接+"s"就行了
			System.out.println(temp.concat("s"));		
		}
		scanner.close();
	}
}

執行結果:
測試資料
https://cpe.cse.nsysu.edu.tw/cpe/file/attendance/problemPdf/testData/uva11233a.php
https://ithelp.ithome.com.tw/upload/images/20171230/20107866MZPh7miUjc.png


後記:
其實這題還蠻煩的,字串處理真的就是CPE的重點。我花了快2個小時才完成XD。


上一篇
HTML Bootstrap 初學應用 Button
下一篇
PYTHON regular expression 正規表達式超入門
系列文
資工的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言