从字符串中提取和打印每个字母仅一次

磨损编码

我目前正在编写一种算法,该算法需要用户输入,识别整个字符串中的每个字母,然后将每个字母打印出来,并打印出它旁边该字符串中出现的次数。当前,该算法遍历字符串并执行所需的操作,但并未如底部示例中所示将字母分组在一起。

我坚持要解决这个问题,希望能提供一些建议。我是Java的中级专家,因此选择不与Arrays混为一谈。

PS它旨在排除空格。

//Algorithm
    String newS2 = "";
    String storage = "";
    int repeated = 0;
    
    for(int i = 0; i<userS.length(); i++){
      if(!userS.substring(i, i + 1).equals(" ") && !(userS.substring(i, i + 1).equals(storage.substring(0)))){
        for(int j = 0; j<userS.length(); j++){
          if(userS.substring(j, j + 1).equals(userS.substring(i, i + 1))){
            storage += userS.charAt(j);
          }
        }
        repeated = storage.length();
        newS2 += storage.charAt(0) + String.valueOf(repeated);
        repeated = 0;
        storage = "";
      }
    }

userS是一个预先初始化的String变量,该变量设置为用户通过Scanner变量输入的内容

目前,如果我输入“此消息”,则会得到:t1h1i1s3m1e2s3s3a1g1e2当我真正想要得到时:t1h1i1s3m1e2g1

火星原子

您不必跟踪源字符串中已经出现的字母,因此新字符串中所有额外的内容是每个字符的额外出现次数以及该字符出现在字符串其余部分中的总次数。

您需要进行其他检查,以查看是否已经遇到过一封信。尝试使用String.contains()排除重复字符。逻辑是:如果新字符串尚未包含此字符,则应添加该字符。否则,什么都不做。

if(!newS.contains(storage.substring(0, 1))
{
    storagestorage += userS.charAt(j);
}

但是,您确实应该使用某种数据结构。Java具有数据结构是有原因的。尝试使用HashMap,其中单个字符串为键,重复次数为值,您将获得一段紧凑的代码,该代码非常容易理解。现在,您的方法有点不直观,因为您是在storage逐个字符地建立字符,并根据该字符被存储的次数得出重复次数,而不是简单地增加计数器。

HashMap<String, Integer> myMap = new HashMap<>();

for(int count = 0; count < userS.length(); count++)
{
    String sub = userS.subString(count, count + 1);

    if(myMap.containsKey(sub))
    {
        // this char is already in the map
        myMap.replace(sub, new Integer(myMap.get(sub) + 1));
    }
    else
    {
        myMap.put(sub, new Integer(1));
    }
}

我认为是对的,请原谅我在手机上打错字。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从字符串中提取和打印每个字母仅一次

来自分类Dev

匹配字符串中每个字母的第一次出现

来自分类Dev

递归方法将字符串中的每个字母向后打印3次

来自分类Dev

Python - 如果字符串与字符串不匹配,则仅打印一次

来自分类Dev

尝试在Java中仅将输入的单词中的每个字符打印一次

来自分类Dev

尝试在Java中仅将输入的单词中的每个字符打印一次

来自分类Dev

如何检查两个字符串是否具有相同的字母,但只打印一次常见的字母?

来自分类Dev

从第一个字母中提取子字符串

来自分类Dev

如何一次显示一个字母的字符串?

来自分类Dev

如何从一个字符串的第一次出现开始从一个大文件中提取文本?

来自分类Dev

PowerShell仅打印字符串的第一个字母

来自分类Dev

POWERBI,DAX:仅连接一次字符串,拆分和保留子字符串一次

来自分类Dev

仅显示每个单词的字符串的第一个字母

来自分类Dev

如何编写一个接受字符串并打印出该字符串的每个字母的 JavaScript 函数?

来自分类Dev

Python-仅替换一次字符串中的字母

来自分类Dev

如何从向量中提取特定字符串的最后一次出现

来自分类Dev

如何在字符串中找到模式最后一次出现的位置,并使用这些位置从另一个字符串中提取子字符串

来自分类Dev

如何在一个字符的第一次出现和另一个字符的第一次出现之间提取字符串?

来自分类Dev

在新字符串(字符串组合)中仅打印重叠字符一次

来自分类Dev

Java:使用第一次出现的分隔符从一个字符串中提取两个字符串?

来自分类Dev

仅将包含字符串的行打印一次

来自分类Dev

python仅使用此子字符串打印一次

来自分类Dev

JavaScript:提取数组中每个字符串的第一个字母?

来自分类Dev

一次更改一个字符串中的字母(Pandas,Python3)

来自分类Dev

Postgres Regex:在模式的最后一次出现和行尾之后提取字符串

来自分类Dev

如何在第一次出现的:和冒号之间提取字符串

来自分类Dev

如何仅输出字符串中每个单词的第一个字母?Visual Basic

来自分类Dev

改组字符串数组仅使用一次

来自分类Dev

确保一个字符串包含特定字符,每个字符最多一次

Related 相关文章

  1. 1

    从字符串中提取和打印每个字母仅一次

  2. 2

    匹配字符串中每个字母的第一次出现

  3. 3

    递归方法将字符串中的每个字母向后打印3次

  4. 4

    Python - 如果字符串与字符串不匹配,则仅打印一次

  5. 5

    尝试在Java中仅将输入的单词中的每个字符打印一次

  6. 6

    尝试在Java中仅将输入的单词中的每个字符打印一次

  7. 7

    如何检查两个字符串是否具有相同的字母,但只打印一次常见的字母?

  8. 8

    从第一个字母中提取子字符串

  9. 9

    如何一次显示一个字母的字符串?

  10. 10

    如何从一个字符串的第一次出现开始从一个大文件中提取文本?

  11. 11

    PowerShell仅打印字符串的第一个字母

  12. 12

    POWERBI,DAX:仅连接一次字符串,拆分和保留子字符串一次

  13. 13

    仅显示每个单词的字符串的第一个字母

  14. 14

    如何编写一个接受字符串并打印出该字符串的每个字母的 JavaScript 函数?

  15. 15

    Python-仅替换一次字符串中的字母

  16. 16

    如何从向量中提取特定字符串的最后一次出现

  17. 17

    如何在字符串中找到模式最后一次出现的位置,并使用这些位置从另一个字符串中提取子字符串

  18. 18

    如何在一个字符的第一次出现和另一个字符的第一次出现之间提取字符串?

  19. 19

    在新字符串(字符串组合)中仅打印重叠字符一次

  20. 20

    Java:使用第一次出现的分隔符从一个字符串中提取两个字符串?

  21. 21

    仅将包含字符串的行打印一次

  22. 22

    python仅使用此子字符串打印一次

  23. 23

    JavaScript:提取数组中每个字符串的第一个字母?

  24. 24

    一次更改一个字符串中的字母(Pandas,Python3)

  25. 25

    Postgres Regex:在模式的最后一次出现和行尾之后提取字符串

  26. 26

    如何在第一次出现的:和冒号之间提取字符串

  27. 27

    如何仅输出字符串中每个单词的第一个字母?Visual Basic

  28. 28

    改组字符串数组仅使用一次

  29. 29

    确保一个字符串包含特定字符,每个字符最多一次

热门标签

归档