java - 使用递归在字符串中搜索指定的子字符串
问题描述
我正在做一个简短的项目,使用递归在字符串中搜索指定的子字符串。
我尝试过使用各种字符串和子字符串,以及使我的代码尽可能简单,但如果子字符串超过一个字符,它总是返回 false。(我有访问器和修改器,以及int i
在此方法之前设置为 0)
public boolean find(String target) {
if (i == target.length()) {
return true;
}
System.out.println(sentence);
if (sentence.length() < target.length()) {
return false;
}
if (getSentence().toLowerCase().charAt(0) == target.toLowerCase().charAt(0)) {
i++;
} else {
i = 0;
}
sentence = sentence.substring(1);
return find(target);
}
测试器代码和输出:
public static void main(String[] args) {
Sentence test = new Sentence("Lizard");
System.out.println(test.find("z"));
Sentence test2 = new Sentence("Seventeen");
System.out.println(test2.find("teen"));
}
Lizard
izard
zard
true
Seventeen
eventeen
venteen
enteen
nteen
teen
een
false
解决方案
您的方法仅target
在第一个字符处进行测试,但您修改了sentence
- 例如,您还需要target
在递归时修改您的。就像是,
public boolean find(String target) {
if (i == target.length()) {
return true;
}
System.out.println(sentence);
if (sentence.length() < target.length()) {
return false;
}
if (sentence.toLowerCase().charAt(0) == target.toLowerCase().charAt(0)) {
i++;
} else {
i = 0;
}
sentence = sentence.substring(1);
return find(target.substring(1));
}
推荐阅读
- javascript - 从 jQuery 函数返回事件
- android - 如何在底栏上重叠导航抽屉?
- java - 使用 Maven 为 Sonarqube 配置多个 Jacoco 报告
- sql - 如何在oracle中将一列多行划分为不同的列?
- java - 创建用于调用所需功能的测试基础页面
- javascript - 如何按降序对div数据进行排序
- oracle11g - 减去时间戳时出现无效月份错误
- excel - 如何将Word文件每个表格的第一行和最后一行复制到Excel工作表中?
- powershell - 希望创建一个批处理文件来执行多个 PowerShell 命令来运行 Modded Minecraft 服务器
- ruby-on-rails - rails Netflix fast_jsonapi 自动选择序列化程序