如何找到频率相同的字母

时间:2018-05-24 23:41:20

标签: for-loop nested structure

我刚刚开始使用java,我试图创建一个嵌套的for循环(不使用数组),它给了我一个字符串中有多少个字母(来自字母表)的频率为零。因此,如果我的字符串是" test",那么它应该显示" 23个字母"作为答案,因为字符串中只有26个字母中有3个。但是,我的程序缺少信息。我试图确保我的程序可以针对我正在寻找的特定频率,即。 0

到目前为止,这是我的计划:

public class FindMaxandMinofString {

public static void main(String[] args) {         

char charToLookFor;
String s = "test";
int count = 0;

for (charToLookFor = 'a'; charToLookFor = 'z' ;charToLookFor++)
{
    for(int l = 0; l < s.length(); l++) {
        if(s.charAt(l) == charToLookFor)
        count++;
}
System.out.print(count); 

}

2 个答案:

答案 0 :(得分:1)

不是计算0的计数,而是从26的计数开始,并在找到新的字母时从中减去。当你找到一个时,它会从循环中导入break,否则你可能会多次计算每个字母。

public class FindMaxandMinofString {

    public static void main(String[] args) {         

        char charToLookFor;
        String s = "test";
        int count = 26;

        for (charToLookFor = 'a'; charToLookFor <= 'z' ;charToLookFor++)
        {
            for(int l = 0; l < s.length(); l++)
            {
                if(s.charAt(l) == charToLookFor)
                {
                    count--;
                    break;
                }
            }
        }
        System.out.print(count + " letters");
    }
}

答案 1 :(得分:0)

您可以使用哈希集完成此任务 - 当您找到一个字符时,将其添加到哈希集。在您完成整个字符串的迭代后,您的答案将减去26减去最终哈希集的大小。