題目連結:
給定兩正整數 L 、 N (0 ≦ L ≦ 20 , 1 ≦ N ≦ 100),代表接下來有 L 列輸入。每列有兩個由小寫字母組成的英文字詞,前者代表單數的型態、後者則為複數型態。
再接著有 N 列輸入,每列給定一個單數型的英文單字。請輸出其複數型。
複數型的規則是:
先從已給定的那些單複數字詞開始找,找到就輸出對應的複數型;如果沒有在給定的單字裡面,則根據其結尾有不同的變化方式:
如果結尾是子音字母 + 字母 y ,則將 y 改成 ies ;
如果結尾是「o」、「s」、「ch」、「sh」、「x」,則在結尾加上 es ;
以上皆非的話,直接加 s 於結尾。
3 7
rice rice
spaghetti spaghetti
octopus octopi
rice
lobster
spaghetti
strawberry
octopus
peach
turkey
rice
lobsters
spaghetti
strawberries
octopi
peaches
turkeys
因為給定的特定單複數型之字詞數量不多,所以可以直接存起來然後要查找時直接用迴圈跑一次。
如果從給定的字詞中找不到,就直接照著題目的要求判斷字詞結尾來決定複數型。但是要注意字詞的長度再取結尾(因為可能不滿兩個字母)
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。