所以我在做一个方法,用10000到55555的数字填充一个字符串。这些数字在6位数系统中。这意味着当我们有10005时,下一个数字是10010和11555-
我做了一个for循环,用所有数字填充字符串,但我不知道如何找到3 og更相等的数字。我想我需要另一个带有If语句的for循环,但我只是不明白。尝试同时使用 char 和 int 进行循环,但我显然做错了什么。
这是我目前掌握的情况:
public class TestProgram {
public static void main(String... args)
{
System.out.println(membersnumbers());
}
public static int membersnumbers()
{
int count = 0;
for (int i = 1296; i < 7776; i++) //fills the String with numbers from 1000 to 5555
{ //without numbers over 6
String number = Integer.toString(i,6); //making the String and fills it with numbers
for (<run through all the numbers>)
{
if (<number has less than 3 equal digits )
{
count++;
}
}
}
return count;
}
}
有什么想法吗?
如果你能给我们展示一下你迄今为止所做的尝试,那就太好了。下面是我使用streams的有点疯狂的实现(ab)。
import java.util.stream.IntStream;
import static java.util.function.Function.identity;
import static java.util.stream.Collectors.groupingBy;
public static long membersnumbers() {
return IntStream.range(1296, 7776)
.mapToObj(integer -> Integer.toString(integer, 6))
.filter(string -> string.chars()
.mapToObj(String::valueOf)
.collect(groupingBy(identity()))
.values()
.stream()
.anyMatch(list -> list.size() > 1))
.count();
}
尝试将代码的一部分提取为有意义的方法,将问题分解为较小的问题,例如:
public static int membersnumbers() {
int count = 0;
for (int i = 1296; i < 7776; i++) {
if (hasAtLeastTwoSameCharacters(Integer.toString(i, 6))) {
count++;
}
}
return count;
}
在这一点上,你不应该担心AtLeastTwoSameCharacters
是如何工作的。只需定义您需要的下一个较小的步骤。
private static boolean hasAtLeastTwoSameCharacters(String string) {
for (char c : string.toCharArray()) {
if (countCharactersInString(c, string) > 1) {
return true;
}
}
return false;
}
这里再次强调,不要担心<code>countCharactersInString</code>的问题,只要用较小的问题替换这个问题,直到你得到的“问题”如此之小,以至于你可以用单一方法轻松解决它。
private static int countCharactersInString(char characterToCount, String string) {
int count = 0;
for (char c : string.toCharArray()) {
if (c == characterToCount) {
count++;
}
}
return count;
}
PS将开括号{
留在行尾-它大大降低了在行尾添加分号的风险。可能需要很长时间才能弄清楚为什么下面代码中的条件不起作用:
if (1 == 2);
{
System.out.println("should be never printed but always is");
}
使用以下方法获取字符串中相同字母的最大数目-
public static int getMaxCount(String s) {
Map<Character, Integer> map = new HashMap<Character, Integer>();
for(int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
Integer val = map.get(new Character(c));
if(val != null){
map.put(c, new Integer(val + 1));
} else {
map.put(c,1);
}
}
List<Integer> countList = new ArrayList<Integer>(map.values());
Collections.sort(countList);
Collections.reverse(countList);
return countList.get(0);
}
在您将数字作为字符串迭代的循环中调用此方法,并检查此方法是否返回大于等于3的值以进行过滤。
您将需要两个额外的 for 循环,一个用于循环访问字符串中的字符,另一个用于计算相等的字符。
for(int i = 0; i < string.length(); i++){
char curChar = string.charAt(i);
int charCount = 0;
for(int j = 0; j < string.length(); j++){
if(j != i && curChar == string.charAt(j)) charCount++;
}
if(count >= 3) count++;
charCount = 0;
}
我试图获取任意长度的字符串[],并将其打印成字符串,最好使用字段分隔符。现在我有: 但是由于某种原因,它只是返回“第二个”值。我如何使它正确连接这些值? 另外,我可以使用来简化代码吗?谢谢
我想在Swift中的符号@或数字之前得到值。我的电子邮件是。我只想获得。另一个例子是。我只想获得。
本文向大家介绍使用MySQL计算字符串中的字符数,包括了使用MySQL计算字符串中的字符数的使用技巧和注意事项,需要的朋友参考一下 今天,我需要从一个表中获取一些数据,该表中另一个字符串中不止一个字符串出现。基本上,我需要从一个表中查找所有深度超过3级(即带有3个斜杠)的URL,但是意识到在MySQL中没有函数可以执行此操作。我找到了另一种方法,但它使我思考如何可能。 找到解决方案并不是很困难,我
问题内容: 给我一个字符串,如果有一个或多个无效字符,则必须返回False,否则返回True。需要注意的是,我只能内置函数和str操作(例如:in,+,indexing,len)和递归。到目前为止,我没有用: 显然,由于递归,该代码无法正常工作,并且在下一次递归迭代之后才将变量加1 。 问题答案: 对于小尺寸(约一千个字符)的DNA序列,这是一个实际的实现 注意事项 在python中使用递归要小心
给我一个字符串,如果有一个或多个无效字符,必须返回False,否则返回true。需要注意的是,我只能内置函数和字符串操作(例如:in,+,indexing,len)和递归。到目前为止,我所掌握的一切都不起作用: 显然,由于递归的原因,这段代码无法工作,在下一次递归迭代之后,将1添加到变量中会被删除。
问题内容: 如何找到字符串中字符出现的次数? 例如:敏捷的褐狐狸跳过了那只懒狗 。 下面是一些示例输出, 问题答案: 输出量