Tạo mảng mới độ dài 256, duyệt chuỗi ký tự bởi ký tự, tăng giá trị trong mảng mới. Cuối cùng duyệt mảng, trả về ký tự đầu tiên có giá trị 1.
Ví dụ 1
aabccd → 2 1 2 1 → Trả về ký tự đầu tiên có đếm 1. Đó là b (trừ giá trị ASCII).
Ví dụ 2
using System;
namespace ConsoleApplication
{
public class Arrays
{
public char ReturnCharacterOfFirstUniqueCharachter(string s)
{
int index = -1;
int[] arrayValues = new int[256];
for (int i = 0; i < s.Length; i++)
{
int value = s[i] - 'a';
arrayValues[value] += 1;
}
for (int i = 0; i < s.Length; i++)
{
int value = s[i] - 'a';
if (arrayValues[value] == 1)
{
index = i;
break;
}
}
return s[index];
}
}
class Program
{
static void Main(string[] args)
{
Arrays a = new Arrays();
Console.WriteLine(a.ReturnCharacterOfFirstUniqueCharachter("bbookisgreat"));
Console.ReadLine();
}
}
}
Kết quả
k
Giải thích: Chuỗi "bbookisgreat". Ký tự 'k' xuất hiện 1 lần đầu tiên (vị trí 6). Mảng đếm tần suất 256 phần tử (ASCII). Lưu ý: code giả định chỉ có chữ thường a-z. Cần mở rộng cho Unicode.