C语言 子串反向——递归

C语言 子串反向——递归,第1张

嗯,你可能理解错了,不是最终最终执行08条,而是在任何一次的竖丛递归调用结束之后都有伍握可能从这个地方返回。我来讲解一下吧,如果这棵树非空,而且存在左子树,那么的确会在第5行一直走到最左下的叶子,在到达最左下的叶子之后的那一次递归(此时root->lchild==null,调用heightbt(root-lchild)),root==null,那么返回0,此时递归返回一层,也就是返回到最左下的叶子处,此时LH=0,继续执行heightbt(root->rchild),那么类似刚腔纤庆才的过程继续检查右子树。其实递归的话没有必要去追究每一步都是怎么执行的,而是要从整体上去把握他的思想。写递归的时候也是这样,不太可能去细究每一步应该怎么实现,而要认为只要条件设置正确,那么一定会正确的实现递归。另外,楼主要注意一下编程风格。

public class StringBufferDemo {

public static void main(String[] args) {

StringBuffer s=new StringBuffer("近来天气不太好,有时几天都见不到月亮。可今天却是明月当空,青天万里无云")

StringBuffer s1=new StringBuffer("明月当空,青天万里无云")

s=s.delete(s.lastIndexOf("耐困明月当空,青天万里无云"),s.length())//将“明昌罩念月当空,青天万里无云”取出,存到StringBuffer s1中。

System.out.println(s)

s1=s1.delete(3,s1.length())/闷粗/删除s1从第三个字符开始的所有字符。

System.out.println(s1)

StringBuffer s2=new StringBuffer(s.substring(7,10))//取s的一个子串s2(从第7个开始取出3个字符)。

System.out.println(s2)

s2.reverse()//将子串s2反转。

System.out.println(s2)

s1.append(s2)//将s2添加到s1的后面。

System.out.println("字符串'"+s1+"'的长度是:"+s1.length())//计算新字符串的长度L,并打印出结果。

}

}

结果是:

近来天气不太好,有时几天都见不到月亮。可今天却是

明月当

,有时

时有,

字符串'明月当时有,'的长度是:6

#include <档岩漏iostream>

#include <string>

#include <algorithm>

using namespace std

int main()

{

string str="abcd!ccad!x"

string delimiters="!"

size_t current=str.find_first_not_of(delimiters,0)

size_t next=str.find_first_of(delimiters,current)

while 行烂(current!=string::npos)

{

if (next==string::npos)

reverse(str.begin()+current,str.end())

else 

reverse(str.begin()+current,str.begin()+next)

current=str.find_first_not_of(delimiters,next)

next = str.find_first_of(delimiters,current)

} 枣郑

cout<<str

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12338828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存