小伙伴最近開了家淘寶店,每天為寶貝的名稱弄得很麻煩,經常需要根據不同的關鍵字來組合寶貝的名稱,但不知道啥組合能引入更多的流量,所以每個都試著弄弄看,所以這就需要一個字符串的組合。
在那個夜黑風高的晚上,小伙伴帶著我去華強北吃了壽司,無意間談了這個小東西,實現難度不高,立刻動手:

1 internal class PRogram 2 { 3 /* 4 思路:獲取需要組合的字符串數組,循環讀取字符串數組成立組合,再根據該組合循環再去組合,其實就是遞歸讀取,用Contains判斷是有包含即可 5 */ 6 private static void Main(String[] args) 7 { 8 //調用方法,傳入字符串 9 showStr();10 Console.Read();11 }12 13 public static void showStr()14 {15 string[] str1 = new string[] {"好用的", "4s", "蘋果", "喬布斯"}; //原始數組16 string[] str2 = new string[] {"好用的", "4s", "蘋果", "喬布斯"}; //變化數組17 18 //循環讀取str1字符串數組19 for (int x = 2; x <= str1.Length; x++)20 {21 //調用方法,傳入 原始字符串數組 和 前一次的字符串數組,獲得新的字符串數組22 str2 = ChangeStr(str1, str2);23 if (str2 == null)24 {25 break;26 }27 PrintString(str2); //輸出本次的轉換28 }29 }30 31 32 //定義方法,接收 原始字符串數組 和 前一次的字符串數組,并返回新字符串數組33 public static String[] ChangeStr(String[] chs, String[] oldStrs)34 {35 //因為新字符串數組長度暫時無法確定,也為了轉換方便,所以使用StringBuilder來接收每個新字符串36 StringBuilder sb = new StringBuilder();37 //定義新字符串數組 38 String[] newStrs = null;39 40 //外循環,遍歷每個字符串數組41 for (int x = 0; x < oldStrs.Length; x++)42 {43 //內循環,遍歷每個原始字符串,將每個字符串把每個不同字符都單獨添加一次44 for (int y = 0; y < chs.Length; y++)45 {46 //判斷字符串是否包含該字符串47 if (oldStrs[x].Contains(chs[y]))48 //已包含該字符,則不操作,繼續下次循環49 continue;50 //不包含該字符,則添加該字符51 String s = oldStrs[x] + chs[y];52 //添加新字符串到StringBuilder對象并用','隔開53 sb.Append(s).Append(',');54 }55 }56 //獲得新字符串數組57 if (sb.Length != 0)58 {59 newStrs = sb.Remove(sb.Length - 1, 1).ToString().Split(',');60 }61 return newStrs;62 }63 64 public static void PrintString(String[] strs)65 {66 foreach (var str in strs)67 {68 Console.Write(str);69 Console.WriteLine();70 }71 }72 }
這個也是軟件的算法之一,其實這個可以衍生更多好玩的,例如記錄這個關鍵字組合用了多少次,引入了多少流量,實現這功能用什么交互等,這也是下一步需要做的~
新聞熱點
疑難解答