318. 最大单词长度乘积

题目链接:318. 最大单词长度乘积 - 力扣(LeetCode)

 

 

 

 

 

 

 

 

 

 

 

解析:

位运算,将字母表示成01的值,然后&

class Solution {
public:
    int maxProduct(vector<string>& words) {

        int n = words.size();
        vector<int> mapp;

        bool vis[26];
        for (int i = 0; i < n; i++) {
            int temp = 0;
            memset(vis, 0, sizeof(vis));
            for (int j = 0; j < words[i].size(); j++) {
                int c = words[i][j] - 'a';
                if (vis[c]) continue;
                vis[c] = 1;
                temp += (1 << c);
            }
            mapp.push_back(temp);
        }


        int max_v = 0;
        for (int i = 0; i < n; i++) {
            for (int j = i + 1; j < n; j++) {
                if (mapp[i] & mapp[j]) continue;
                int v = words[i].size() * words[j].size();
                max_v = max(max_v, v);
            }

        }
        return max_v;
    }
};

 

posted @ 2026-01-22 23:06  WTSRUVF  阅读(0)  评论(0)    收藏  举报