59 贪心算法和回溯算法分割平衡字符串

发布时间:2023年12月24日

问题描述:在一个平衡字符串中,'L'和'R'字符的数量是相同的。在给定一个平衡字符串s,请你将它分割成尽可能多的平衡字符串。注意:分割得到的每个字符串都必须是平衡字符串,返回可以通过分割得到的平衡字符串的最大数量。回溯算法求解:给定一个初始start,一直往后遍历,如果start和遍历到的index如果是平衡串,则向下继续dfs,这个dfs以index+1为开始继续遍历,如果该dfs返回,则接着进行循环遍历,如果index=字符串.length,则表示找到了一个平衡字符串。
?

public Boolean isBalance(String s)
{
int Lcount=0;
int Rount=0;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)=='L')
{
Lcount++;
}else
{
Rcount++;
}
}
???????return Lcount==Rcount?true:false;
}

public void tranceBack(String s,int start,Integer all)
{
if(start==s.length()){all+=1;return;}
for(int i=index;i<s.length();i++)
{
if(isBalance(s.substring(index,i+1))){
tranceback(s,i+1,all);
}else
{
continue;
}
}
}
public int TranceBack(String s)
{
Integer all=0;
tranceBack(S,0,all);
???????return all.parseInt();
}

贪心算法求解:指针一直往前走,只要Lcount==Rcount,即为一个平衡子串,

public int balance(String s)
{
int Lcount=0;
int Lcount=0;
int count=0;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)=='L'){Lcount++;}
else
{
Rcount++;
}
if(Lcount==Rcount){count++;}
}
???????return count;
}

文章来源:https://blog.csdn.net/qq_52299902/article/details/135180687
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。