การจัดเรียงอย่างเต็มรูปแบบของสตริงเนื้อหาเฉพาะมีดังนี้
ป้อนสตริงและพิมพ์การเตรียมการทั้งหมดของอักขระในสตริงในลำดับพจนานุกรม ตัวอย่างเช่นอินพุตสตริง ABC พิมพ์สตริง ABC, ACB, BCA, CAB และ CBA ทั้งหมดที่สามารถจัดเรียงโดยอักขระ A, B, C โปรดส่งออกลำดับตามลำดับตัวอักษร
ใช้ความคิดของการเรียกซ้ำ:
แบ่งสตริงที่ต้องจัดเรียงอย่างเต็มที่เป็นสองส่วน:
(1) อักขระแรกของสตริง
(2) ตัวละครทั้งหมดหลังจากตัวละครตัวแรก
ค้นหาตัวละครทั้งหมดที่อาจปรากฏในตำแหน่งแรก แลกเปลี่ยนอักขระตัวแรกและอักขระต่อไปนี้ในครั้งเดียว
แก้ไขอักขระตัวแรกและค้นหาการจัดเรียงทั้งหมดของตัวละครทั้งหมดหลังจากตัวละครตัวแรก อักขระทั้งหมดที่ติดตามตัวละครตัวแรกสามารถแบ่งออกเป็นสองส่วน
รหัส Java:
นำเข้า java.util.arraylist; นำเข้า Java.util.Treeset; โซลูชันคลาสสาธารณะ {Public ArrayList <String> การเปลี่ยนแปลง (String Str) {ArrayList <String> res = new ArrayList <String> (); if (str == null || str.length () == 0) {return res; } char [] chararray = str.toChararray (); // เอาท์พุทตามลำดับของพจนานุกรมอินพุต TreeSet <String> tempres = ใหม่ Tereet <String> (); PermantationCore (Chararray, Tempres, 0); res.addall (tempres); Ret Res; } โมฆะส่วนตัว permantationCore (char [] chararray, treyet <string> tempres, int loc) {ถ้า (chararray == null || chararray.length == 0 || loc <0 || loc> chararray.length-1) {return; } if (loc == chararray.length-1) {tempres.add (string.valueof (chararray)); // recursive exit} อื่น {สำหรับ (int i = loc; i <chararray.length; i ++) {swap (chararray, i, loc); swap (chararray, i, loc); // swap back ตัวละครที่แลกเปลี่ยนก่อนหน้านี้เพื่อให้ตัวละครตัวแรกสามารถแลกเปลี่ยนกับตัวละครอื่น ๆ }}}} การแลกเปลี่ยนโมฆะส่วนตัว (char [] chararray, int i, int j) {char temp = chararray [i]; chararray [i] = chararray [j]; chararray [j] = อุณหภูมิ; -ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น