【问题标题】:How to find a frequent character in a string written in pseudocode. Thanks如何在用伪代码编写的字符串中查找频繁字符。谢谢
【发布时间】:2014-12-01 23:37:14
【问题描述】:

最常见的字符 设计一个程序,提示用户输入一个字符串,并显示字符串中出现频率最高的字符。

这是一个家庭作业问题,但我的老师没有帮助,它让我发疯,我无法弄清楚。

提前谢谢你。

这是我目前所拥有的!

Declare String str
Declare Integer maxChar
Declare Integer index

Set maxChar = 0

Display “Enter anything you want.”
Input str

For index = 0 To length(str) – 1
    If str[index] =

现在我卡住了。我不认为它是正确的,我不知道该去哪里!

【问题讨论】:

  • 嗯,这是一个家庭作业问题,所以我们不能只给你解决方案。你会怎么做?你有什么想法吗?
  • 我知道我需要让字符串通过一个循环来遍历每个字符。我知道没有一个函数可以获取字符串中的最大/频繁字符。我只是不知道如何把它放在一起。有多少变量?多少个数组?如果我需要多个循环以及如何设置该循环。我不是在这里试图作弊或任何事情......它只是让我烦恼,我无法弄清楚。我将不胜感激任何帮助。我更擅长学习示例或查看答案的外观,因此我可以理解它是如何工作的。我使用的这本书没有我需要的例子。
  • 你是对的,你必须遍历每个字符。然后,您必须使用一种数据结构,让您可以像这样保存对:(“字符”,“它被看到的次数”)。你知道可以完成这项工作的数据结构吗?
  • 这就是我现在拥有的! Declare String str Declare Integer maxChar Declare Integer index Set maxChar = 0 Display “Enter any you want.”输入 str For index = 0 To length(str) – 1 If str[index] = 现在我卡住了...我只是觉得它看起来不对...我不知道该怎么做
  • 请尝试编辑问题并将其放在那里而不是评论。

标签: pseudocode


【解决方案1】:

在我看来,您想要这样做的方式是: “遍历字符串中的每个字符并记住我们最常看到的字符”。

但是,这行不通。如果我们只记住单个字符的计数,例如“我们见过最多的字符是 'a',出现 5 次”,我们无法知道第二位的字符是否没有向前跳。

所以,你要做的是:

  1. 遍历字符串的每个字符。
  2. 对于每个字符,增加该字符的出现次数。是的,您必须为遇到的每个字符保存此计数。像 stringint 这样的简单变量在这里是不够的。
  3. 完成后,您会得到一堆看起来像“a”=5、“b”=2、“e”=7...的数据,您必须仔细检查并找到最高数(我相信您可以找到在序列中查找最高数的示例),然后返回对应的字母。

我知道,这不是一个完整的答案,但这就是我要说的全部。

如果您遇到困难,我建议您准备一支笔和一张纸并尝试手动计算。试着想一想——没有电脑你会怎么做?如果你的答案是“看看”,那么如果文本是 10 页呢?我知道这可能会让人很困惑,但这一切的目的是让你习惯不同的思维方式。如果你弄清楚这一点,下一次会更容易,因为基本原则总是相同的。

【讨论】:

  • 谢谢您..感谢您的帮助。我希望我能得到这个。我明白需要做什么......我只是对如何完成它感到困惑。
  • 介意看看我现在有什么吗?让我知道你的想法?
【解决方案2】:

这是我创建的用于计算字符串中所有出现次数的代码。

String abc = "aabcabccc";
char[] x = abc.toCharArray();
String _array = "";
for(int i = 0; i < x.length; i++) //copy distinct data to a new string
{
    if(_array.indexOf(x[i]) == -1)
    _array = _array+x[i];
}
char[] y = _array.toCharArray();
int[] count1 = new int[_array.length()];
for(int j = 0; j<x.length;j++) //count occurences
{
    count1[new String(String.valueOf(y)).indexOf(x[j])]++;
}
for(int i = 0; i<y.length;i++) //display
{
    System.out.println(y[i] + " = " + count1[i]);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2017-08-14
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    相关资源
    最近更新 更多