跳转到主要内容

不区分大小写的字符串排序

按不区分大小写的字母顺序对字符串进行排序。

实现

import { RedBlackTree } from '@msnkr/data-structures';

// 不区分大小写的比较器
const names = new RedBlackTree<string>({
comparator: (a, b) => a.toLowerCase().localeCompare(b.toLowerCase()),
});

// 添加混合大小写的名称
names.insert('Charlie');
names.insert('alice');
names.insert('BOB');
names.insert('David');

// 按不区分大小写的字母顺序迭代
for (const name of names) {
console.log(name);
}

输出

alice
BOB
Charlie
David

保留原始大小写

interface CaseInsensitiveString {
original: string;
lowercase: string;
}

const sortedNames = new RedBlackTree<CaseInsensitiveString>({
comparator: (a, b) => a.lowercase.localeCompare(b.lowercase),
});

function addName(name: string): void {
sortedNames.insert({
original: name,
lowercase: name.toLowerCase(),
});
}

addName('Charlie');
addName('alice');
addName('BOB');

for (const item of sortedNames) {
console.log(item.original);
}
// 输出:alice, BOB, Charlie

不区分大小写搜索

function searchName(name: string): boolean {
const searchTerm = {
original: name,
lowercase: name.toLowerCase(),
};
return sortedNames.contains(searchTerm);
}

console.log(searchName('bob')); // true
console.log(searchName('BOB')); // true
console.log(searchName('Bob')); // true
console.log(searchName('bobby')); // false

另请参阅