小伙伴最近开了家淘宝店,每天为宝贝的名称弄得很麻烦,经常需要根据不同的关键字来组合宝贝的名称,但不知道啥组合能引入更多的流量,所以每个都试着弄弄看,所以这就需要一个字符串的组合。
在那个夜黑风高的晚上,小伙伴带着我去华强北吃了寿司,无意间谈了这个小东西,实现难度不高,立刻动手:
1internalclassPRogram2{3/*4思路:获取需要组合的字符串数组,循环读取字符串数组成立组合,再根据该组合循环再去组合,其实就是递归读取,用Contains判断是有包含即可5*/6privatestaticvoidMain(String[] args)7{8//调用方法,传入字符串9showStr();10Console.Read();11}1213publicstaticvoidshowStr()14{15string[] str1 =newstring[] {"好用的","4s","苹果","乔布斯"};//原始数组16string[] str2 =newstring[] {"好用的","4s","苹果","乔布斯"};//变化数组1718//循环读取str1字符串数组19for(intx =2; x <= str1.Length; x++)20{21//调用方法,传入 原始字符串数组 和 前一次的字符串数组,获得新的字符串数组22str2 =ChangeStr(str1, str2);23if(str2 ==null)24{25
break;26}27PrintString(str2);//输出本次的转换28}29}303132//定义方法,接收 原始字符串数组 和 前一次的字符串数组,并返回新字符串数组33publicstaticString[] ChangeStr(String[] chs, String[] oldStrs)34{35//因为新字符串数组长度暂时无法确定,也为了转换方便,所以使用StringBuilder来接收每个新字符串36StringBuilder sb =newStringBuilder();37//定义新字符串数组38String[] newStrs =null;3940//外循环,遍历每个字符串数组41for(intx =0; x < oldStrs.Length; x++)42{43//内循环,遍历每个原始字符串,将每个字符串把每个不同字符都单独添加一次44for(inty =0; y < chs.Length; y++)45{46//判断字符串是否包含该字符串47if(oldStrs[x].Contains(chs[y]))48//已包含该字符,则不操作,继续下次循环49continue;50//不包含该字符,则添加该字符51String s = oldStrs[x] +chs[y];52//添加新字符串到StringBuilder对象并用','隔开53sb.Append(s).Append(',');54}55}56//获得新字符串数组57if(sb.Length !=0)58{59newStrs = sb.Remove(sb.Length -1,1).ToString().Split(',');60}61returnnewStrs;62}6364publicstaticvoidPrintString(String[] strs)65{66foreach(varstrinstrs)67{68Console.Write(str);69Console.WriteLine();70}71}72}
View Code
这个也是软件的算法之一,其实这个可以衍生更多好玩的,例如记录这个关键字组合用了多少次,引入了多少流量,实现这功能用什么交互等,这也是下一步需要做的~