Posted on

Description

Submission

class Solution {
string abbreviate(const string& str, int mask) {
int n = str.length();
int cnt = 0; // number of continuous zero
string ret;
for(int i = 0; i < n; ++i) {
if((mask>>i)&1) {
if(cnt) {
ret += to_string(cnt);
cnt = 0;
}
ret.push_back(str[i]);
} else {
++cnt;
}
}
if(cnt) ret += to_string(cnt);
return ret;
}
public:
string minAbbreviation(string target, vector<string>& dictionary) {
int m = target.length();
vector<string> dict;
for(auto& word: dictionary) {
if(target.length() == word.length()) {
dict.push_back(word);
}
}
if(dict.empty()) {
return to_string(target.length());
}
int minLen = m;
string ret = target;
for(int i = 0; i < (1 << m); ++i) {
bool flag = true;
string abbr = abbreviate(target, i);
for(auto& word: dict) {
if(abbreviate(word, i) == abbr) {
flag = false;
break;
}
}
if(flag) {
if(abbr.length() < minLen) {
minLen = abbr.length();
ret = abbr;
}
}
}
return ret;
}
};
class Solution { string abbreviate(const string& str, int mask) { int n = str.length(); int cnt = 0; // number of continuous zero string ret; for(int i = 0; i < n; ++i) { if((mask>>i)&1) { if(cnt) { ret += to_string(cnt); cnt = 0; } ret.push_back(str[i]); } else { ++cnt; } } if(cnt) ret += to_string(cnt); return ret; } public: string minAbbreviation(string target, vector<string>& dictionary) { int m = target.length(); vector<string> dict; for(auto& word: dictionary) { if(target.length() == word.length()) { dict.push_back(word); } } if(dict.empty()) { return to_string(target.length()); } int minLen = m; string ret = target; for(int i = 0; i < (1 << m); ++i) { bool flag = true; string abbr = abbreviate(target, i); for(auto& word: dict) { if(abbreviate(word, i) == abbr) { flag = false; break; } } if(flag) { if(abbr.length() < minLen) { minLen = abbr.length(); ret = abbr; } } } return ret; } };
class Solution {
    string abbreviate(const string& str, int mask) {
        int n = str.length();
        int cnt = 0;   // number of continuous zero
        string ret;
        for(int i = 0; i < n; ++i) {
            if((mask>>i)&1) {
                if(cnt) {
                    ret += to_string(cnt);
                    cnt = 0;
                }
                ret.push_back(str[i]);
            } else {
                ++cnt;
            }
        }
        if(cnt) ret += to_string(cnt);
        return ret;
    }
public:
    string minAbbreviation(string target, vector<string>& dictionary) {
        int m = target.length();

        vector<string> dict;
        for(auto& word: dictionary) {
            if(target.length() == word.length()) {
                dict.push_back(word);
            }
        }

        if(dict.empty()) {
            return to_string(target.length());
        }

        int minLen = m;
        string ret = target;

        for(int i = 0; i < (1 << m); ++i) {
            bool flag = true;
            string abbr = abbreviate(target, i);
            for(auto& word: dict) {
                if(abbreviate(word, i) == abbr) {
                    flag = false;
                    break;
                }
            }
            if(flag) {
                if(abbr.length() < minLen) {
                    minLen = abbr.length();
                    ret = abbr;
                }
            }
        }

        return ret;
    }
};

Leave a Reply

Your email address will not be published. Required fields are marked *