免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
LeetCode 1087. Brace Expansion

原題鏈接在這里:https://leetcode.com/problems/brace-expansion/

題目:

A string?S?represents a list of words.

Each letter in the word has 1 or more options.? If there is one option, the letter is represented as is.? If there is more than one option, then curly braces delimit the options.? For example,?"{a,b,c}"?represents options?["a", "b", "c"].

For example,?"{a,b,c}d{e,f}"?represents the list?["ade", "adf", "bde", "bdf", "cde", "cdf"].

Return all words that can be formed in this manner, in lexicographical order.

Example 1:

Input: "{a,b}c{d,e}f"Output: ["acdf","acef","bcdf","bcef"]

Example 2:

Input: "abcd"Output: ["abcd"]

Note:

  1. 1 <= S.length <= 50
  2. There are no?nested curly brackets.
  3. All characters inside a pair of?consecutive opening and ending curly brackets are different.

題解:

If there is curly braces, all the chars in it could be candidate.

Starting from index 0. Do DFS, DFS state needs orginal string, current index, current StringBuilder and res collection.

If current index i points to '{', then find next index j points to '}', for each of candidate inside brances, append it to StringBuilder and continue DFS at index j 1. After DFS, do backtracking.

If current index i points to char, append it to StringBuilder and continue DFS at index i 1. After DFS, do bracktracking.

When current index points to the end of string, add copy of StringBuilder to res collection.

Time Complexity: exponential.

Space: O(n). n = S.length(). stack space.

AC Java:

 1 class Solution { 2     public String[] expand(String S) { 3         if(S == null || S.length() == 0){ 4             return new String[0]; 5         } 6          7         List<String> res = new ArrayList<String>(); 8         dfs(S, 0, new StringBuilder(), res); 9         Collections.sort(res);10         return res.toArray(new String[0]);11     }12     13     private void dfs(String s, int i, StringBuilder sb, List<String> res){14         if(i >= s.length()){15             res.add(sb.toString());16             return;17         }18         19         20         if(s.charAt(i) == '{'){21             int j = i 1;22             while(j<s.length() && s.charAt(j)!='}'){23                 j  ;24             }25             26             String [] candidates = s.substring(i 1, j).split(",");27             for(String candidate : candidates){28                 sb.append(candidate);29                 dfs(s, j 1, sb, res);30                 sb.deleteCharAt(sb.length()-1);31             }32         }else{33             sb.append(s.charAt(i));34             dfs(s, i 1, sb, res);35             sb.deleteCharAt(sb.length()-1);36         }37     }38 }

?

來源:https://www.icode9.com/content-4-546501.html
本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
一個巧妙的正則驗證
Redis批量導入數(shù)據(jù)的方法
C#把字符數(shù)組轉(zhuǎn)換成含有分隔符的字符串(5-3-4-2-5-5)
StringBuilder in Javascript - Fengzhimei@Dot....
stringBuilder類實例
C#拼接string字符串
更多類似文章 >>
生活服務
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服