การเขียนโปรแกรมมีความแข็งแกร่งมาก คุณไม่สามารถบอกโปรแกรมที่จะ "เอาท์พุทนับกล้วย" print(bananas)
คุณต้องบอกให้
แต่เมื่อคุณทำเช่นนั้นคุณจะพบปัญหา: คุณไม่รู้ว่ามีกล้วยอยู่กี่ตัวก่อนหน้านี้ดังนั้นคุณจึงไม่รู้ว่าจะใช้พหูพจน์หรือไม่
บางครั้งโปรแกรมเมอร์ก็ไปอย่างขี้เกียจ there are X banana(s)
แทนการตรวจสอบพวกเขาเพียงแค่พิมพ์
แต่มันน่าเกลียดดังนั้นเราต้องมีโปรแกรมเพื่อแก้ไขปัญหานี้
วิธีการ
หากต้องการลบพหูพจน์ที่ไม่ชัดเจนในสตริงให้ทำตามขั้นตอนต่อไปนี้:
แยกสตริงบนช่องว่างออกเป็นรายการคำ
สำหรับทุกคำที่ลงท้ายด้วย
(s)
ทำต่อไปนี้:- หากคำก่อนคือ
a
,an
,1
หรือone
เอา(s)
ในตอนท้ายของคำว่า - มิฉะนั้นถ้าเป็นคำที่คำแรกในสตริงหรือคำที่ก่อนหน้านี้ไม่ได้
a
,an
,1
หรือone
เปลี่ยนตอนท้ายของคำที่มี(s)
s
- หากคำก่อนคือ
เข้าร่วมรายการคำกลับมารวมกันเป็นสตริงรักษาช่องว่างดั้งเดิม
ตัวอย่าง)
ลองสตริงthere's a banana(s) and three apple(s)
ดู
อันดับแรกเราแบ่งสตริงออกเป็นรายการคำ: ["there's", "a", "banana(s)", "and", "three", "apple(s)"]
สำหรับขั้นตอนที่สองเราจะใช้คำสองคำที่ลงท้ายด้วย(s)
: และbanana(s)
apple(s)
คำก่อนหน้าbanana(s)
นี้คือa
เราจึงลบ(s)
มันbanana
ออก คำก่อนที่จะapple(s)
เป็นthree
ดังนั้นเราจึงเปลี่ยน(s)
ไปดังนั้นมันจะกลายเป็นs
apples
["there's", "a", "banana", "and", "three", "apples"]
ขณะนี้เรามี there's a banana and three apples
การเข้าร่วมรายการกลับมารวมกันที่เราได้รับ นี่คือผลลัพธ์สุดท้ายของเรา
ความท้าทาย
สร้างโปรแกรมหรือฟังก์ชั่นที่รับสตริงที่ไม่ชัดเจนในรูปแบบที่เหมาะสมและส่งคืนเวอร์ชันที่ไม่ได้คลุมเครือของสตริงนั้น
คุณอาจถือว่าสตริงไม่มีการขึ้นบรรทัดใหม่แท็บหรือการขึ้นบรรทัดใหม่
ฉันลืมที่จะระบุว่าจะแบ่งกลุ่มของช่องว่างหรือช่องว่าง (เช่นควรokay then
มีสองช่องว่าง["okay", "then"]
หรือ["okay", "", "then"]
) เมื่อโพสต์ความท้าทายดังนั้นคุณอาจสันนิษฐานว่าเป็นรูปแบบการแยก
กรณีทดสอบ
Input -> Output
there are two banana(s) and one leprechaun(s) -> there are two bananas and one leprechaun
there's a banana(s) and three apple(s) -> there's a banana and three apples
apple(s) -> apples
one apple(s) -> one apple
1 banana(s) -> 1 banana
banana -> banana
preserve original whitespace(s) -> preserve original whitespaces
11 banana(s) -> 11 bananas
an apple(s) -> an apple
this is a te(s)t -> this is a te(s)t
I am a (s)tranger(s) -> I am a (s)tranger
เกณฑ์การให้คะแนน
เช่นนี้เป็นโค้ดกอล์ฟการส่งที่มีไบต์น้อยที่สุดชนะ!
apple(s)
กรณีทดสอบควรให้ผลตอบแทนapples
แทนหรือไม่? ความท้าทายระบุOtherwise, if the word is the first word in the string . . . replace the (s) at the end of the word with s.
ว่ากรณีนี้ให้ผลเป็นapples
แซนด์บ็อกซ์สำหรับการแก้ไขสามครั้งแรก แต่เปลี่ยนที่สี่
There's a single banana(s)
There's a single bananas