我在这个递归练习中遇到了一个问题。
练习是测试字符数组是否只有大写或小写,然后才返回true;否则,如果同时存在小写和大写字母,则返回false。
下面的代码总是返回true。
我试着在每次有大信号或小信号时都计算一个变量,然后如果数量等于数组,那么它是真的,否则它不是真的;但它没有给我这个。这是一个布尔函数,调用递归并没有给出变量的数量。
守则:
public static boolean Arr(char[] arr, int length) {
if (length == -1)
return true;
boolean flag = Character.isUpperCase(arr[length]);
if (flag)
return true;
return Arr(arr, length - 1);
}
这能满足你的需要吗?
public
前端只接受一个字符数组,并使用终端用户不必担心的参数的起始值调用private
后端。
public static boolean sameCase(char[] ary) {
return sameCase(ary, 0, ary.length - 1);
}
后端试图将阵列的当前段分成两个子段,将问题减半,使堆栈的增长率保持为O(log#chars)
,而不是O(#chars)
。如果当前段少于两个字符,则所有字符的大小写基本相同。否则,请检查每个子段是否具有大小写相同的字符,如果是,请使用XOR和技巧检查两个子段的大小写是否相同。
private static boolean sameCase(char [] ary, int first, int last) {
int len = last - first + 1;
int mid = first + len / 2;
return len < 2 ||
(sameCase(ary, first, mid - 1) && sameCase(ary, mid, last) &&
(Character.isUpperCase(ary[first]) ^ Character.isLowerCase(ary[last])));
}
注意,通过对递归调用进行ANDing,逻辑短路平均加快了速度。
看看这是否有效
public static boolean Arr(char[] arr, int length) {
if (length == -1)
return true;
boolean flag = Character.isUpperCase(arr[length]);
if (flag)
return Arr(arr, length - 1);
else
return false;
}
您需要函数中的附加参数和附加退出条件:
第二种方法不是从第一个字符开始,而是从第二个字符开始,检查当前字符和先前字符之间是否有相同的大小写。
我有一个数组,如果两个相邻的数被10除,它将返回true。现在它的回报总是假的。
这就是我正在研究的问题:“给定一个整数数组,是否可以选择一个整数组,使得这个组和给定的目标有这些附加的约束条件:数组中所有5的倍数都必须包含在组中。如果紧接在5倍数后面的值是1,就不能选择它。(不需要循环。)” 我尝试了以下操作: 但它只得到5的倍数,我试过: 但它不起作用,因为有时5的倍数不包括在内。 我知道我的代码还没有完成第二个约束。 有什么想法吗?
这个页面的操作符可用于根据条件发射或变换Observables,或者对它们做布尔运算: 条件操作符 amb( ) — 给定多个Observable,只让第一个发射数据的Observable发射全部数据 defaultIfEmpty( ) — 发射来自原始Observable的数据,如果原始Observable没有发射数据,就发射一个默认数据 (rxjava-computation-expressi
我想写返回true的Python函数一个字符串s是回文,也就是等于它的反。例如,“赛车”和“abba”是回文。到目前为止,这是我不成功的尝试。 当我告诉我的函数返回相反的结果时,我没有问题,但是,我不知道应该如何进行比较才能返回一个布尔值。 使用上面的函数会产生以下错误 现在我完全理解为什么会产生上述错误。这是因为一些递归函数返回一个boool并尝试将其添加到字符串中;但是我做不到的是如何避免这个
这章的中心话题是能够根据程序的状态执行不同命令的if语句。但是首先我想介绍两个新的运算符 : 地板除(floor division)和求余(modulus)。 地板除和求余 地板除 运算符(floor division operator) // 先做除法,然后将结果保留到整数。例如,如果一部电影时长105 分钟,你可能想知道这代表着多少小时。传统的除法操作会返回一个浮点数: >>> minutes