|
|
há 1 mês atrás | |
|---|---|---|
| .cache | há 4 meses atrás | |
| 23 | há 6 meses atrás | |
| 24 | há 6 meses atrás | |
| 25 | há 3 meses atrás | |
| 26 | há 1 mês atrás | |
| dataStruct | há 6 meses atrás | |
| dynamic planning | há 5 meses atrás | |
| else | há 6 meses atrás | |
| greed | há 6 meses atrás | |
| key | há 6 meses atrás | |
| test | há 6 meses atrás | |
| tools | há 6 meses atrás | |
| we | há 6 meses atrás | |
| .clangd | há 4 meses atrás | |
| .gitignore | há 6 meses atrás | |
| AGENTS.md | há 4 meses atrás | |
| CLAUDE.md | há 4 meses atrás | |
| README.md | há 6 meses atrás | |
| main.c | há 6 meses atrás | |
| main.go | há 6 meses atrás | |
| test.go | há 2 meses atrás | |
| tools.h | há 6 meses atrás |
for (const string &word : words)
{
int state = 0;
for (char c : word)
{
state |= 1 << (c - 'a');
}
res += cnt[state];
cnt[state]++;
}
这是一种位压缩算法,巧妙的利用二进制的位来表示一个单词中出现的所有字母。
关键就是state |= 1 << (c - 'a');这一行。这一行的作用是将state的第(c - 'a')位设为1,这样就可以表示这个单词中出现了字母c。