问题描述:在一个平衡字符串中,'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;
}