计算字符串中唯一字母的数量

时间:2014-05-20 11:25:05

标签: java string letters

我必须编写一个代码,用于计算字符串中有多少个唯一字母: e.g

"aabbcdefff"

这将返回6,因为字符串中有6个不同的字母。目前我有代码:

  String letters = ("aabbcdefff");              
  char temp = ' ';
   for (int i = 0; i < letters.length(); i++){
      temp = inp.charAt(i);
      if (temp != ' ') {   //doesnt count spaces as letters
        alphabetSize = alphabetSize+1;
          for (int j = 0; j < inp.length(); j++){
            tempInp = tempInp.replace(temp,' ');
        }
      }
    }   

这段代码的想法是,它应该在检测到一个字母时,用空格替换它的所有实例。然而,当我运行此代码时,它只是给我字符串的长度。我究竟做错了什么?还有另一种更优雅的方法吗?

感谢您的帮助。

5 个答案:

答案 0 :(得分:6)

只需使用Set即可。

循环遍历字符串,并将每个字母添加到您的字符集中。然后,检查你的设置长度和你的完成。

答案 1 :(得分:1)

它是Java 8流API的单线程序:

long numberOfDistinctChars = s.chars().distinct().count()

答案 2 :(得分:1)

您可以使用Linq服务轻松找到它。

请添加using System.Linq;命名空间。

string str = "TestTest";
int cnt = str.ToLower().ToCharArray().Where(w => w != ' ').Distinct().Count();

答案 3 :(得分:0)

您可以使用 Java集合(设置)轻松完成。

Set<Character> result = new HashSet<Character>();

    String letters = ("aabbcdefff");              
       for (int i = 0; i < letters.length(); i++){
          result.add(letters.charAt(i));
        }   

您的最终结果是结果集,并且始终是唯一的。

参考:http://docs.oracle.com/javase/7/docs/api/java/util/Set.html

感谢。

答案 4 :(得分:0)

执行此操作的一种方法是将字符串转换为数组,然后使用以下方法:

    String s = "aabbcdefff";

    char[] charArray = s.toCharArray();

    ArrayList<Character> al = new ArrayList<Character>();


    for(char c : charArray){
        if(al.contains(c)){
            al.remove((Character)c);
        }else{
            al.add(c);
        }
    }

数组列表'al'中剩下的内容是重复的。这种方法的优点是它具有O(n)运行时