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

วิธีพิมพ์ตัวอักษรซ้ำในสตริงด้วย C#

การหาตัวอักษรที่ซ้ำกันในสตริงด้วย C#

สามารถหาตัวอักษรที่ปรากฏซ้ำในสตริงได้โดยใช้อาร์เรย์นับความถี่ (frequency array) ขนาด 256 สำหรับ ASCII ทั้งหมด

ตัวอย่างโค้ด

using System;

class Demo
{
    static int maxCHARS = 256;

    static void Calculate(string s, int[] cal)
    {
        for (int i = 0; i < s.Length; i++)
            cal[s[i]]++;
    }

    public static void Main()
    {
        string s = "Welcometomywebsite!";
        int[] cal = new int[maxCHARS];

        Calculate(s, cal);

        Console.WriteLine("ตัวอักษรที่ซ้ำและจำนวนครั้ง:");
        for (int i = 0; i < maxCHARS; i++)
        {
            if (cal[i] > 1)
            {
                Console.WriteLine($"Character: {(char)i}");
                Console.WriteLine($"Occurrence: {cal[i]} times");
                Console.WriteLine();
            }
        }
    }
}

ผลลัพธ์ตัวอย่าง

ตัวอักษรที่ซ้ำและจำนวนครั้ง:
Character: e
Occurrence: 4 times

Character: m
Occurrence: 2 times

Character: o
Occurrence: 2 times

Character: t
Occurrence: 2 times

Character: w
Occurrence: 2 times

คำอธิบาย

  • สร้างอาร์เรย์ cal ขนาด 256 เพื่อนับความถี่ของแต่ละ ASCII code
  • วนลูปผ่านทุกตัวอักษรในสตริง และเพิ่มค่าที่ดัชนีตรงกับค่า ASCII
  • ตรวจสอบค่าที่มากกว่า 1 แสดงว่าตัวอักษรนั้นซ้ำ
  • ใช้ (char)i แปลงค่า ASCII กลับเป็นตัวอักษร

การปรับปรุงสำหรับ Unicode

หากต้องการรองรับ Unicode ให้ใช้ Dictionary<char, int> แทนอาร์เรย์ขนาดคงที่