【发布时间】:2019-04-20 16:11:38
【问题描述】:
我正在编写一个程序来查找给定字符串中重复的“a”的数量。例如,调用 findAmountA("aba", 7) 意味着它在字符串 "aba" 中找到重复 7 个字符的 'a' 的数量。所以 "abaabaa" 是最后一个字符串,所以调用会返回 5。
如果没有实际使字符串 7 个字符(因此调用 1,000,000 个字符不会花费这么长时间),我将如何使用数学来完成这项任务?我无法比这更进一步,因为我一直在尝试解决此问题。
请记住,我是一名初学 Java 程序员(学生),不想使用任何我在高中不会学的高级/花哨的语法。谢谢!
public class AInString {
public static void main(String[] args) {
boolean a = findAmountA("aba", 10) == 7;
boolean b = findAmountA("a", 100) == 100;
boolean c = findAmountA("abca", 10) == 5;
boolean d = findAmountA("", 10) == 0;
boolean e = findAmountA("abcaa", 1000000) == 600000;
boolean f = findAmountA("abc", 0) == 0;
boolean g = findAmountA("bcd", 10) == 0;
System.out.println(a && b && c && d && e && f && g);
}
public static int findAmountA(String word, int n) {
String s = word;
if(s.length() == 0 || aInWord(word) == 0) {
return 0;
}else {
int a = (aInWord(s));
return a;
}
}
public static int aInWord(String word) {
String s = word;
int aInWord = 0;
for(int i = 0; i < word.length(); i++) {
if(s.charAt(i) == 'a') {
aInWord++;
}
}
return aInWord;
}
}
【问题讨论】:
-
我对初学者的最大建议是:除非万不得已,否则不要花哨。过早的优化是导致错误的最大不必要原因之一。
-
@JoeC 这正是我的观点,我不想使用花哨的东西,我正在尝试找到一个简单的解决方案
标签: java string char substring