Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

การหาสตริงแรกที่ไม่มีตัวอักษรซ้ำในอาร์เรย์ (Unique Characters) ใน JavaScript

ภาพรวม

บทความนี้สาธิตวิธีหาสตริงตัวแรกในอาร์เรย์ที่ไม่มีตัวอักษรซ้ำกันภายในตัวเอง (All Unique Characters)

ตัวอย่าง

const arr = ['54gdgdfe3', '434ffd', '43frdf', '43fdhnh', 'wgcxhjny', 'fsdf34'];
// 'wgcxhjny' -> ทุกตัวอักษรไม่ซ้ำ -> ผลลัพธ์

การนำไปใช้

const isUnique = (str) => 
  [...str].every((char, i, arr) => arr.indexOf(char) === i);

const findUniqueString = (arr) => {
  for (const str of arr) {
    if (isUnique(str)) return str;
  }
  return false;
};

console.log(findUniqueString(arr)); // 'wgcxhjny'

ผลลัพธ์

wgcxhjny

วิธีการที่มีประสิทธิภาพมากกว่า (O(n) ต่อสตริง)

const isUniqueFast = (str) => {
  const seen = new Set();
  for (const char of str) {
    if (seen.has(char)) return false;
    seen.add(char);
  }
  return true;
};

// หรือ One-liner
const isUniqueOneLine = (str) => new Set(str).size === str.length;

Bit Vector Approach (สำหรับ a-z เท่านั้น, O(1) Space)

const isUniqueBitVector = (str) => {
  let checker = 0;
  for (const char of str) {
    const val = char.charCodeAt(0) - 97; // 'a' = 97
    if (val < 0 || val > 25) continue; // ข้าม non a-z
    if (checker & (1 << val)) return false;
    checker |= (1 << val);
  }
  return true;
};

การประยุกต์ใช้

  • Password Validation: ตรวจสอบตัวอักษรไม่ซ้ำ
  • Pangram Detection: ตรวจสอบครบ a-z
  • Data Deduplication
  • Cryptanalysis: Substitution Cipher Analysis

ข้อควรระวัง

  • Case Sensitivity: 'A' != 'a'
  • Unicode: Set และ [...str] รองรับได้ดี
  • Performance: Bit Vector เร็วสุดแต่จำกัด Character Set