给定一个字符串str1作为输入。目标是在输入字符串中的一对相同字符之间插入一个“*”,并使用递归方法返回结果字符串。
如果输入字符串是str1="wellness"那么输出将是"wel*lnes*s"
输入 -str1="幸福"
输出 -添加*后的字符串:hap*pines*s
说明 -在pp和ss对之间添加*将为我们提供结果字符串hap*pines*s
输入 -str1=”swimmmminggggpooool”
输出 -添加*后的字符串:swim*m*m*ming*g*g*gpo*o*o*ol
说明-在mm、gg和oo对之间添加*将为我们提供结果字符串游泳*m*m*ming*g*g*gpo*o*o*ol
在这种方法中采用字符串str1。在每次迭代中,以当前索引为中点将str1一分为二。如果第一个子串的最后一个字符与下一个子串的第一个字符相同,则将原始字符串设置为子串1后跟*后跟子串2。如果substring2的长度为0,则结束递归。
取输入字符串为str1,计算长度为len。
函数addStar(string&s1,inti,intlen1)将s1、其长度和当前索引作为输入,如果两对字符相同,则添加*。
将tmp1作为s1从索引0到i的子串
将tmp2作为s1从索引i到len1+1的子串。
如果tmp1的最后一个字符和tmp2的第一个字符相等,则设置s1=tmp1+*+tmp2。
调用addStar(s1,i+1,len1);用于下一次迭代。
最后在main中打印str1。
如果我们运行上面的代码,它将生成以下输出
String after adding * : a*ab*bc*c*cd*d*d*d