320. Generalized Abbreviation
Write a function to generate the generalized abbreviations of a word.
Example:
Given word = "word"
, return the following list (order does not matter):
["word", "1ord", "w1rd", "wo1d", "wor1", "2rd", "w2d", "wo2", "1o1d", "1or1", "w1r1", "1o2", "2r1", "3d", "w3", "4"]
public IList<string> GenerateAbbreviations(string word) { List<string> res = new List<string>(); BackTracking(word,0,"",res,0); return res; } private void BackTracking(string word,int sentinel, string cur, List<string> res, int isNumberbefore) { if(sentinel == word.Length) { if(isNumberbefore ==0) res.Add(cur); else res.Add(cur+isNumberbefore); } else { if(isNumberbefore > 0) BackTracking(word, sentinel+1,cur+isNumberbefore+word[sentinel],res,0); else BackTracking(word, sentinel+1,cur+word[sentinel],res,0); BackTracking(word, sentinel+1,cur,res,isNumberbefore+1); } }