当前位置: 首页 > 知识库问答 >
问题:

生成数字,然后在字符串中找到重复的数字,计算有效字符串

鱼恩
2023-03-14

所以我在做一个方法,用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;
}
}

有什么想法吗?

共有3个答案

冉绯辞
2023-03-14

如果你能给我们展示一下你迄今为止所做的尝试,那就太好了。下面是我使用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");
}
益和雅
2023-03-14

使用以下方法获取字符串中相同字母的最大数目-

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的值以进行过滤。

司健柏
2023-03-14

您将需要两个额外的 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添加到变量中会被删除。

  • 问题内容: 如何找到字符串中字符出现的次数? 例如:敏捷的褐狐狸跳过了那只懒狗 。 下面是一些示例输出, 问题答案: 输出量