- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想让代码只添加我试图读取的数字的完全唯一版本(即 111 中的 1 给出 3,但 333 中的 33 仅给出 33。),但是当我尝试输出结果,像后一个示例这样的实例每个间隔计数一次并添加每个计数的实例(例如,333 中的 33 给出 66 而不是 33)。
到目前为止,这是我的代码:
public static int sumRepeat(int num, String text)
{
int sum = 0;
String calc = Integer.toString(num);
int value = text.indexOf(calc);
for (int i = 0; i < text.length() - calc.length() + 1; i++) {
if (text.substring(i, i + calc.length()).equals(calc))
sum += num;
}
return sum;
}
有人可以帮我把它弄到我不会遇到这个错误并且代码按预期运行的地方吗?谢谢你。
sumRepeat(1, "I love CSCE111") returns 3
sumRepeat(12, "The bill is $12.97") returns 0
sumRepeat(33, "333 bananas for 33 monkeys.") returns 66
sumRepeat(333, "My number is (333)-333-3333") returns 999
sumRepeat(87, "I can't believe Aragorn is 83 years old. 83!") returns 0
sumRepeat(41, "41414141") returns 164
sumRepeat(0, "") returns 0
最佳答案
更新(基于更新的问题):
您可以使用 Java Regex API来解决它。使用正则表达式,"(?<!\\$)(" + String.valueOf(num) + ")"
并将每个匹配项添加到 sum
.请注意 ?<!
用于 negative lookbehind .这里的意思是num
前面不应加上 $
.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
System.out.println(sumRepeat(1, "111"));
System.out.println(sumRepeat(33, "333"));
System.out.println(sumRepeat(1, "I love CSCE111"));
System.out.println(sumRepeat(12, "The bill is $12.97"));
System.out.println(sumRepeat(33, "333 bananas for 33 monkeys."));
System.out.println(sumRepeat(333, "My number is (333)-333-3333"));
System.out.println(sumRepeat(87, "I can't believe Aragorn is 83 years old. 83!"));
System.out.println(sumRepeat(41, "41414141"));
System.out.println(sumRepeat(0, ""));
}
public static int sumRepeat(int num, String text) {
int sum = 0;
Matcher matcher = Pattern.compile("(?<!\\$)(" + String.valueOf(num) + ")").matcher(text);
while (matcher.find()) {
sum += num;
}
return sum;
}
}
输出:
3
33
3
0
66
999
0
164
0
非正则表达式解决方案:
String#indexOf(String, int)
找到
calc
的索引从给定的索引开始。每次找到该索引时,添加
num
至
sum
并将此索引移动
num
的长度;否则,继续将此索引移动
1
.
public class Main {
public static void main(String[] args) {
System.out.println(sumRepeat(1, "111"));
System.out.println(sumRepeat(33, "333"));
System.out.println(sumRepeat(1, "I love CSCE111"));
System.out.println(sumRepeat(12, "The bill is $12.97"));
System.out.println(sumRepeat(33, "333 bananas for 33 monkeys."));
System.out.println(sumRepeat(333, "My number is (333)-333-3333"));
System.out.println(sumRepeat(87, "I can't believe Aragorn is 83 years old. 83!"));
System.out.println(sumRepeat(41, "41414141"));
System.out.println(sumRepeat(0, ""));
}
public static int sumRepeat(int num, String text) {
int sum = 0;
String calc = Integer.toString(num);
int len = calc.length();
int i = 0;
while (i < text.length()) {
int index = text.indexOf(calc, i);
if (index != -1) {
if (index == 0 || text.charAt(index - 1) != '$') {// Check to exclude num preceded by $
sum += num;
i = index + len;
} else {
i++;
}
} else {
i++;
}
}
return sum;
}
}
输出:
3
33
3
0
66
999
0
164
0
原解决方案:
i < text.length()
并继续步值
num
.
public class Main {
public static void main(String[] args) {
System.out.println(sumRepeat(1, "111"));
System.out.println(sumRepeat(33, "333"));
}
public static int sumRepeat(int num, String text) {
int sum = 0;
String calc = Integer.toString(num);
for (int i = 0; i < text.length(); i += num) {
if (text.substring(i, i + calc.length()).equals(calc)) {
sum += num;
}
}
return sum;
}
}
输出:
3
33
关于java - "If the number is contained in the text and is repeated, return the sum of the number for each time it is repeated. Otherwise return 0.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64884316/
我有以下代码: swapInPairs :: [a] -> [a] swapInPairs [] = [] swapInPairs [x] = [x] swapInPairs (x:y:ys) = y
这个问题已经有答案了: Why is GHC complaining about non-exhaustive patterns? (3 个回答) 已关闭 5 年前。 我用 Haskell 编写了一个
您好,我是 Angular 的新手,我正在学习教程,但在尝试设置默认路由时遇到了错误。错误是未捕获错误:[$injector:modulerr] 无法实例化模块productManagement,原因
我正在使用以下功能: combinations :: Int -> [a] -> [[a]] combinations k xs = combinations' (length xs) k xs
当给定一个空字符串时,以下两个函数的行为有所不同: guardMatch l@(x:xs) | x == '-' = "negative " ++ xs | otherw
假设我去了/unknown-route?a=hello&b=world,而$routeProvider无法识别它并重定向到其他路由: otherwise({ redirectTo: '/defau
当我在Scala中运行此Spark代码时: df.withColumn(x, when(col(x).isin(values:_*),col(x)).otherwise(lit(null).cast(
我正在尝试编译以下代码,但在else语句中得到“|”上的解析错误” 现在我很困惑,因为我在其他一些函数中使用了非常相似的语法,唯一的区别是,这个函数在列表中使用了2个元素,然后尝试重建一个元素(仅供引
我在使用 Bindings.when.then.otherwise 时遇到问题。 这是一个简单的例子: public class Controller implements Initializable
所以我正在尝试匹配这个模式。 MessageType 是我创建的类型。该函数接收一个字符串,然后根据该字符串的第一个字符输出 MessageType。每当我编译时,我都会收到一条警告: Patter
当新路由器中给出了非功能性路由时,我如何使用通配符来路由...就像 1.X 路由器中的 .otherwise 或以前的 beta 路由器中的/** ?非常感谢任何示例/plnkr 代码 最佳答案 im
所以我得到了我的代码: (function (ng) { ng.module('myModuleName') .provider('myProviderName', ['imp
我试过为一个类重载括号运算符,以使访问数组变得不那么乏味。我不明白的是,为什么必须将重载函数的返回类型声明为引用?为什么它一开始就不是左值? struct particle { double
我试过学习教程并查看其他 stackoverflow 问题,但我不知道自己做错了什么。 我用 ionic creator 构建了这个,现在我试图让用户登录到 google,然后完成到我的仪表板的路由。
我熟悉 Angular 中的 "$urlRouterProvider.otherwise('{route here}')" 语法,可以在 Angular UI-Router 中用作 catch all
我有一个 udf 函数,它接受 key 并从 name_dict 返回相应的 value。 from pyspark.sql import * from pyspark.sql.functions i
我最近遇到了一段使用 Haskell 的 otherwise 的代码。在列表上进行模式匹配。这让我觉得很奇怪,因为: ghci> :t otherwise otherwise :: Bool 所以,我
我的index.html页面有3次浏览: 我刚刚将网站更改为使用这 3 个 View ,而不是最初的单个 View 。 我的应用程序中的所有路线都工作正常,例如“主页” View : $st
我在 StackOverflow 中搜索了 和并找到了一些信息,但不完全是我正在寻找的信息。 看起来设计如下:
我在使用 Ionic/Angular 时遇到问题。我是 ionic 新手,需要一些帮助。网上的大部分内容都是针对启动画面的,所以我来这里寻求进一步的帮助。 我希望应用程序默认登陆“欢迎”页面。我需要写
我是一名优秀的程序员,十分优秀!