คำอธิบายข้อกำหนด: ค้นหาองค์ประกอบอาร์เรย์ของชุดสตริงที่จัดเรียงในคำสั่งซื้อที่แตกต่างจากชุดอาร์เรย์ หากมีอาร์เรย์เช่นนี้:
การคัดลอกรหัสมีดังนี้:
['ABCD', 'Hello', 'Bdca', 'Olleh', 'Cadb', 'NBA', 'ABN', 'ABC']
ผลลัพธ์ที่จะพบคือ:
การคัดลอกรหัสมีดังนี้:
['ABCD', 'BDCA', 'CADB']
จากนั้นประเด็นสำคัญที่นี่คือการพิจารณาว่าชุดของสตริงเป็นเพียงลำดับของอักขระที่แตกต่างกันหรือไม่ ตราบใดที่จุดสำคัญทั้งหมดได้รับการแก้ไขมันจะง่ายกว่าที่จะทำ
วิธีที่ 1:
การคัดลอกรหัสมีดังนี้:
var stringclassify = function (arr) {
var arrlength = arr.length
obj = {}
i = 0,
จำนวน, รายการ, ชื่อ, firstItem, strlength;
สำหรับ (; i <arrlength; i ++) {
item = arr [i];
strlength = item.length;
num = 0;
// แปลงอักขระเดี่ยวเป็นการเข้ารหัส Unicode
// ดึงและคำนวณการเข้ารหัส
สำหรับ (j = 0; j <strlength; j ++) {
num += item.charcodeat (j);
-
ถ้า (! firstItem) {
firstItem = item;
obj [num] .push (รายการ);
-
// ตรวจสอบว่าอักขระแรกของสตริงที่จะเพิ่มหรือไม่คือ
// ปรากฏในสตริงอื่นเพื่อหลีกเลี่ยงสิ่งต่อไปนี้
// ['ad', 'da', 'bc']
อื่นถ้า (~ firstItem.indexof (item.charat (0))) {
obj [num] .push (รายการ);
-
-
สำหรับ (ชื่อใน obj) {
console.log (obj [ชื่อ]);
-
-
วิธีที่ 1 ใช้การสำรวจแต่ละอักขระในสตริงจากนั้นแปลงอักขระตัวเดียวเป็นการเข้ารหัส Unicode และทำการสรุปการเข้ารหัส ผลรวมการเข้ารหัสของ ABCD และ BDCA จะสอดคล้องกัน ในที่สุดให้ใช้คีย์ที่เข้ารหัสและเป็นวัตถุเพื่อบันทึกสตริงที่เข้ารหัสและสอดคล้องกัน
วิธีที่ 1 ควรสังเกตว่าการเข้ารหัส Unicode ของสตริง "AD" และ "BC" นั้นเหมือนกัน ในเวลานี้คุณต้องเพิ่มการตัดสินเพิ่มเติมเพื่อตรวจสอบว่าอักขระตัวแรกในสตริงใด ๆ ที่ปรากฏในสตริงอื่นหรือไม่
วิธีที่ 2:
การคัดลอกรหัสมีดังนี้:
var stringclassify = function () {
var arrlength = arr.length
obj = {}
i = 0,
จำนวน, รายการ, ชื่อ, strarr, newstr;
สำหรับ (; i <arrlength; i ++) {
item = arr [i];
strarr = arr [i] .split ('');
strarr.sort ();
newStr = strarr.join ('');
ถ้า (! obj [newstr]) {
OBJ [NewsTR] = [];
-
OBJ [NewsTR] .PUSH (รายการ);
-
สำหรับ (ชื่อใน obj) {
console.log (obj [ชื่อ]);
-
-
วิธีที่ 2 คือการแปลงสตริงเป็นอาร์เรย์แล้วเรียงลำดับอาร์เรย์ ABCD และ BDCA จะกลายเป็น ABCD หลังจากเรียงลำดับด้วยการเรียงลำดับ ใช้สตริงที่สั่งซื้ออย่างดีเป็นคีย์ของวัตถุเพื่อบันทึกสตริงที่เรียงลำดับอย่างสม่ำเสมอ
ในความเป็นจริงหลักการของทั้งสองวิธีคือการแปลงอักขระเป็นการเข้ารหัส Unicode อย่างไรก็ตามวิธีการที่ 1 คือการแปลงที่ชัดเจนในขณะที่การเรียงลำดับที่ใช้ในเมธอด 2 จะถูกแปลงโดยปริยาย