แบบฝึกหัด - สตริงที่ส่งกลับจากวิธีการ
คุณอาจพบว่าคุณจําเป็นต้องเขียนเมธอดที่ส่งกลับสตริงอยู่บ่อย ๆ ตัวอย่างเช่น คุณอาจต้องการเรียกใช้สตริงจากชุดข้อมูลหรือปรับเปลี่ยนสตริงด้วยวิธีใดวิธีหนึ่ง ในแบบฝึกหัดนี้คุณจะได้รับประสบการณ์ในการทํางานกับสตริงในวิธีในขณะที่ฝึกคําถามการสัมภาษณ์ทั่วไป
สร้างวิธีการที่ส่งกลับสตริง
สมมติว่าคุณเป็นผู้สมัครในการสัมภาษณ์เรื่องการเข้ารหัส ผู้สัมภาษณ์ขอให้คุณเขียนวิธีการ เพื่อกลับรายการสตริงโดยไม่ใช้string.Reverse ใช้เวลาสักครู่เพื่อคิดถึงวิธีที่คุณอาจทํางานนี้ให้สําเร็จ
คุณอาจตัดสินใจว่าคุณสามารถย้อนกลับสตริงโดยวนซ้ําจากจุดสิ้นสุดของสตริง คุณสามารถใช้สตริงชั่วคราวเพื่อจัดเก็บจดหมายแต่ละตัวตั้งแต่ต้นจนจบ มาเริ่มต้นกันเลย!
ใน Visual Studio Code Editor ให้ลบโค้ดที่มีอยู่ออกจากแบบฝึกหัดก่อนหน้า
ป้อนโค้ดต่อไปนี้ในตัวแก้ไข:
string ReverseWord(string word) { string result = ""; return result; }เมธอด จําเป็นต้องทําซ้ําผ่านคําที่กําหนดและอัปเดตผลลัพธ์ หากต้องการดําเนินการนี้ ให้
ReverseWordอัปเดตวิธีการ ด้วยโค้ดต่อไปนี้:string ReverseWord(string word) { string result = ""; for (int i = word.Length - 1; i >= 0; i--) { result += word[i]; } return result; }ในบล็อกรหัสนี้ คุณจะเริ่มต้นจากจุดสิ้นสุดของคําโดยใช้
word.Length - 1คุณลบหนึ่งตัวออกจากความยาวเนื่องจากดัชนีอาร์เรย์เริ่มต้นที่ศูนย์ และคุณต้องการหลีกเลี่ยงการเข้าถึงองค์ประกอบที่อยู่นอกขอบเขต จากนั้นคุณเพิ่มตัวอักษรที่ดัชนีปัจจุบันไปยังresultสตริงและย้ายดัชนีไปข้างหลังi >= 0คุณใช้เนื่องจากiได้รับการอัปเดตหลังจากที่มีการดําเนินการโค้ดในการวนรอบ และคุณต้องการให้แน่ใจว่าได้รวมดัชนีที่เป็นศูนย์
ทดสอบโค้ดของคุณ
เมื่อเขียนโค้ด สิ่งสําคัญคือต้องตรวจสอบงานของคุณบ่อย ๆ การค้นหาและแก้ไขข้อผิดพลาดในช่วงต้นของกระบวนการเขียนโค้ดช่วยให้คุณสามารถใช้เวลามากขึ้นในการสร้างโค้ดที่ถูกต้องแทนที่จะดีบักโปรแกรมขนาดใหญ่โปรแกรมหนึ่ง การตรวจสอบงานของคุณบ่อยครั้งคือทักษะที่ผู้สัมภาษณ์การเขียนโค้ดมีมูลค่าสูงเช่นกัน
ป้อนบรรทัดรหัสว่างใหม่ จากนั้นสร้างข้อความที่ป้อนเข้าและเรียกเมธอด ของคุณโดยการป้อนรหัสต่อไปนี้เหนือ
ReverseWordวิธีการ:string input = "snake"; Console.WriteLine(input); Console.WriteLine(ReverseWord(input));หากจําเป็น ให้เปิดแผงเทอร์มินัลแบบรวมของ Visual Studio Code
ที่พร้อมท์คําสั่งเทอร์มินัล ให้ใส่ dotnet run เปรียบเทียบเอาต์พุตของคุณดังต่อไปนี้:
snake ekansหากรหัสของคุณแสดงผลลัพธ์ที่ไม่คาดคิด คุณจะต้องตรวจสอบรหัสของคุณเพื่อค้นหาข้อผิดพลาดและทําการอัปเดต เรียกใช้รหัสอีกครั้งเพื่อดูว่าคุณได้แก้ไขปัญหาหรือไม่ อัปเดตและเรียกใช้โค้ดของคุณต่อจนกว่ารหัสของคุณจะสร้างผลลัพธ์ที่คาดหวัง
สร้างวิธีการย้อนกลับคําในประโยค
สมมติว่าผู้สัมภาษณ์ของคุณถามคําถามติดตามผล พวกเขาต้องการให้คุณย้อนกลับแต่ละคําในประโยคที่กําหนดโดยรักษาตําแหน่งเดิมของแต่ละคํา คุณสามารถสมมติว่าแต่ละคําถูกคั่นด้วยช่องว่าง ตัวอย่างเช่น "ชนิดผลลัพธ์ของสตริง" จะกลายเป็น "gnirts nruter epyt" ใช้เวลาสักครู่เพื่อคิดเกี่ยวกับวิธีการที่คุณอาจดําเนินการงานนี้
ถ้าคุณใช้วิธีการที่คุณเขียนในงานก่อนหน้านี้ คุณอาจตระหนักว่าคุณสามารถใช้วิธีการย้อนกลับแต่ละคําในสตริงทีละคําได้ คุณสามารถสร้างประโยคใหม่และเพิ่มแต่ละคําตามที่ย้อนกลับได้ มาเริ่มต้นกันเลย!
สร้างบรรทัดรหัสว่างใหม่ในตอนท้ายของโปรแกรมปัจจุบัน จากนั้นป้อนรหัสต่อไปนี้เพื่อสร้างวิธีการใหม่:
string ReverseSentence(string input) { string result = ""; return result; }ถัดไป คุณสามารถแยกคําแต่ละคําออกจากสตริงโดยใช้
string.SplitReverseSentenceอัปเดตวิธีการ ดังต่อไปนี้:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); return result; }ตอนนี้คุณสามารถเข้าถึงแต่ละคําในประโยคแล้ว คุณสามารถใช้วิธีการของคุณ
ReverseWordในแต่ละคําและเก็บไว้ในresultReverseSentenceอัปเดตวิธีการ ดังต่อไปนี้:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result; }ให้สังเกตว่าคุณสามารถเรียกใช้
ReverseWordวิธีการ ภายในตัวดําเนินการกําหนดแบบผสมได้อย่างไร ในรหัสนี้ ค่าที่ส่งกลับจะถูกรวบรวมจากReverseWordและเพิ่มไปยังresultคุณสามารถใช้วิธีการที่มีค่าส่งกลับได้ทุกที่ที่คุณต้องการ ตราบใดที่ชนิดข้อมูลตรงกับข้อกําหนดในรหัสนี้ คําที่ย้อนกลับแต่ละคําจะถูกผนวกเข้ากับผลลัพธ์ด้วยช่องว่างที่เพิ่มเข้ามา อย่างไรก็ตาม การดําเนินการนี้จะออกจากช่องว่างเพิ่มเติมที่ส่วนท้ายของประโยคที่ถูกย้อนกลับ
คุณสามารถลบช่องว่างเพิ่มเติมที่ส่วนท้ายโดยใช้
string.Trimอัปเดตวิธีการ เป็นโค้ดต่อไปนี้:string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result.Trim(); }ใช้เวลาสักครู่เพื่อพิจารณาผลลัพธ์ที่ส่งกลับของวิธีการนี้ เมธอด สามารถใช้วิธีการอื่นตลอดการดําเนินการและแม้แต่ในคําสั่งส่งกลับ ตราบใดที่ชนิดข้อมูลตรงกัน
ในตอนนี้คุณก็พร้อมที่จะเรียกใช้วิธีการ ของคุณแล้ว!
inputอัปเดตข้อความและConsole.WriteLineคําสั่ง ดังต่อไปนี้:string input = "there are snakes at the zoo"; Console.WriteLine(input); Console.WriteLine(ReverseSentence(input));
ตรวจสอบงานของคุณ
สําหรับงานนี้ คุณจะเรียกใช้แอปพลิเคชันของคุณจากเทอร์มินัลรวมและตรวจสอบว่ารหัสของคุณทํางานได้อย่างถูกต้อง มาเริ่มต้นกันเลย
เปรียบเทียบโค้ดของคุณกับโค้ดต่อไปนี้เพื่อให้แน่ใจว่าถูกต้อง:
string input = "there are snakes at the zoo"; Console.WriteLine(input); Console.WriteLine(ReverseSentence(input)); string ReverseSentence(string input) { string result = ""; string[] words = input.Split(" "); foreach(string word in words) { result += ReverseWord(word) + " "; } return result.Trim(); } string ReverseWord(string word) { string result = ""; for (int i = word.Length - 1; i >= 0; i--) { result += word[i]; } return result; }บันทึกงานของคุณโดยใช้ Ctrl + S หรือใช้เมนูไฟล์ของ Visual Studio Code
หากจําเป็น ให้เปิดแผงเทอร์มินัลแบบรวมของ Visual Studio Code
ในแผง EXPLORER หากต้องการเปิดเทอร์มินัลที่ตําแหน่งโฟลเดอร์ TestProject ของคุณ ให้คลิกขวาที่ TestProject จากนั้นเลือก เปิดในเทอร์มินัลแบบรวม
ที่พร้อมท์คําสั่งเทอร์มินัล ให้ใส่ dotnet ทํางาน
ตรวจสอบว่าโค้ดของคุณสร้างเอาต์พุตต่อไปนี้:
there are snakes at the zoo ereht era sekans ta eht oozหากรหัสของคุณแสดงผลลัพธ์ที่แตกต่างกัน คุณจะต้องตรวจสอบรหัสของคุณเพื่อค้นหาข้อผิดพลาดและทําการอัปเดต เรียกใช้รหัสอีกครั้งเพื่อดูว่าคุณได้แก้ไขปัญหาหรือไม่ อัปเดตและเรียกใช้โค้ดของคุณต่อจนกว่ารหัสของคุณจะสร้างผลลัพธ์ที่คาดหวัง