?LeetCode刷題實戰(zhàn)320:列舉單詞的全部縮寫
Write a function to generate the generalized abbreviations of a word.
示例
示例:
輸入: “word”
輸出:
[“word”, “1ord”, “w1rd”, “wo1d”, “wor1”, “2rd”, “w2d”, “wo2”, “1o1d”, “1or1”, “w1r1”, “1o2”, “2r1”, “3d”, “w3”, “4”]
解題
class Solution {
public:
vector<string> generateAbbreviations(string word) {
int len=word.size();
vector<string> res;
res.push_back("");//初始結(jié)果
for(int i=0;i<len;++i){
string w=word.substr(i,1);//對每個字符位置進行處理
int nums_s=res.size();
//對之前出現(xiàn)過的每種結(jié)果進行更新
for(int j=0;j<nums_s;++j){
string tmp=res[j];
res[j]+=w;//更新加上當前字符的方式
//更新轉(zhuǎn)成當前數(shù)字的方式
int k=tmp.size();
//找出當前字符串的末尾的數(shù)字
while(k>0&&isdigit(tmp[k-1])){
--k;
}
//根據(jù)當前字符串的末尾的字符是否是數(shù)字的情形,更新
if(k==tmp.size()){
res.push_back(tmp+"1");
}
else{
res.push_back(tmp.substr(0,k)+to_string(1+stoi(tmp.substr(k,tmp.size()-k))));
}
}
}
return res;
}
};
