gpt4 book ai didi

java - 使用递归在 char[] 中查找特定字符后跟另一个特定字符

转载 作者:行者123 更新时间:2023-12-02 01:19:58 24 4
gpt4 key购买 nike

希望使用递归返回字符数组中字符“:”后跟字符“)”的次数。

public class Recursion {
public static int countSmiles(char[] numbers) {
if (numbers.length == 0) return 0;
if(String.valueOf(numbers[0])== ":" && String.valueOf(numbers[1])==")") return 1 + countSmiles(numbers[1]);
return countSmiles(numbers[1]);
}
public static void main (String[] args) {
char[] s = {'n','g', ':' ,')', ':' ,')'};
System.out.println(countSmiles(s));
}
}

我预计输出为 2。

我能够使用字符串(见下文)成功地做到这一点,但无法使用字符数组做到这一点。

public static int countSmiles(String numbers) {
if (numbers.length() == 0) return 0;
if (numbers.charAt(0) == ':'&& numbers.charAt(1)==')') return 1 + countSmiles(numbers.substring(1));
return countSmiles(numbers.substring(1));
}

最佳答案

除了人们所说的 Arrays.copyOfRange() 之外,您还需要使用 String.equals() 而不是 ==.

工作代码:

import java.util.Arrays;

public class Main {
public static int countSmiles(char[] numbers) {
if (numbers.length == 0) return 0;
if(String.valueOf(numbers[0]).equals(":") && String.valueOf(numbers[1]).equals(")")) {
return 1 + countSmiles(Arrays.copyOfRange(numbers, 1, numbers.length));
}

return countSmiles(Arrays.copyOfRange(numbers, 1, numbers.length));
}
public static void main (String[] args) {
char[] s = {'n','g', ':' ,')', ':' ,')'};
System.out.println(countSmiles(s));
}
}

关于java - 使用递归在 char[] 中查找特定字符后跟另一个特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57895421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com