java - 使用递归计算字符出现在字符串java中的次数
问题描述
我正在做一些递归练习,其中一个让我很困惑。问题是我应该计算字符串中出现“yo”的次数,但如果字母“o”出现在“yo”之前,我不应该计算它。
“yoyo”算二,但“yooyo”算一。我已经完成了一个代码,但它不符合不计算前面有“o”的“yo”的条件。谢谢您的帮助!
我的代码:
import java.util.*;
public class Mp3
{
static int oui(String arr, int index)
{
int count = 0;
if(index >= arr.length())
return 0;
if(count == 0)
{
if(arr.charAt(index) == 'y')
{
if(arr.charAt(index + 1) == 'o')
count++;
else if(arr.charAt(index - 1) == 'o' && arr.charAt(index - 2) != 'y')
--count;
else
return count + oui(arr, index + 1);
}
}
return count + oui(arr, index + 1);
}
public static void main (String[] args)
{
String inp3 = "yoyooyoxhadjiohioyooyoyoxxyoyo";
int res3 = oui(inp3, 0);
System.out.println(inp3 + ":" + res3);
}
}
解决方案
import java.util.*;
public class Mp3
{
static int oui(String arr, int index)
{
int count = 0;
if(index >= arr.length())
return 0;
if(arr.charAt(index)=='o' && arr.charAt(index+1)=='y'&&arr.charAt(index+2)=='o')
return count + oui(arr, index + 3);
if(arr.charAt(index) == 'y' && arr.charAt(index + 1) == 'o')
return count+ 1 +oui(arr, index + 2);
return count + oui(arr, index + 1);
}
public static void main (String[] args)
{
String inp3 = "yoyooyoxhadjiohioyooyoyoxxyoyo";
int res3 = oui(inp3, 0);
System.out.println(inp3 + ":" + res3);
}
}
**我尽量不要对您的代码进行太多更改:
- 我检查是否 index= o 然后如果后面跟着 yo 我跳过它们然后检查
- 我检查是否 index= y 然后是 o 然后我拿它们然后检查因为我总是先检查 o
- 简单:) 如果您有任何问题发表评论,我会尽力解释得更好**
推荐阅读
- c# - 修复 VSTO 插件的零 GUID
- android - 你如何在 Kotlin 中注释 Pair 参数?
- twilio - Twilio:设置拨出电话小部件的电话号码
- facebook - 从 Facebook 的 MessengerExtensions 使用 getContext 时出现错误
- c# - 实现异步代码的自动重启
- android - android架构组件+改造
- python - 如何加快熊猫字符串功能?
- javascript - 如何从另一个文件中提取动态href链接
- docker - pod 创建卡在 ContainerCreating 状态
- angular - Angular:子路由刷新问题