Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找字符串是否唯一_Java_String_Hashtable - Fatal编程技术网

Java 查找字符串是否唯一

Java 查找字符串是否唯一,java,string,hashtable,Java,String,Hashtable,我想使用hashtable来查找唯一的字符,因为它对我来说更有效,所以例如,hashtable中的hello应该是=>{h:1,e:1,l:2,o:1}&因为值大于1,所以字符串不是唯一的。我知道我可以用ascii方法计算唯一字符,但我想实现哈希表方法 请注意,我不想要正则表达式实现 static void findHashUnique(String str) { Hashtable<Character, Integer> ht = new Hashtable<Char

我想使用hashtable来查找唯一的字符,因为它对我来说更有效,所以例如,hashtable中的hello应该是=>{h:1,e:1,l:2,o:1}&因为值大于1,所以字符串不是唯一的。我知道我可以用ascii方法计算唯一字符,但我想实现哈希表方法

请注意,我不想要正则表达式实现

static void findHashUnique(String str)
{
    Hashtable<Character, Integer> ht = new Hashtable<Character, Integer>();
    for(int i=0;i<str.length();i++)
    {
        int cnt=1;

        if(!ht.containsKey(str.charAt(i)))
        {
            ht.put(str.charAt(i), cnt);
        }
    }
    System.out.print(ht);
}
static void findHashUnique(字符串str)
{
Hashtable ht=新的Hashtable();
对于(int i=0;i要“修复”代码,请使用
HashSet
,它在内部使用
Hashtable
,但您不必知道或担心这一点。只需继续将字符添加到集合中,最后会留下一组唯一的字符

为了更容易达到目的:

String uniqueChars = str.replaceAll("(.)(?=.*\\1)", "");
要“修复”代码,请使用
HashSet
,它在内部使用
Hashtable
,但您不必知道或担心这一点。只需继续将字符添加到集合中,最后将留下一组唯一的字符

为了更容易达到目的:

String uniqueChars = str.replaceAll("(.)(?=.*\\1)", "");
这是我的方法

String string = "hello";
Hashtable<Character, Integer> map = new Hashtable<>();
for (int i = 0; i < string.length(); i++) {
   char c = string.charAt(i);
   if (map.containsKey(c)) {
      map.put(c, map.get(c) + 1);
   } else {
      map.put(c, 1);
   }
}
System.out.println(map);
String=“你好”;
Hashtable map=新的Hashtable();
对于(int i=0;i
输出:
{e=1,o=1,l=2,h=1}

这是我的方法

String string = "hello";
Hashtable<Character, Integer> map = new Hashtable<>();
for (int i = 0; i < string.length(); i++) {
   char c = string.charAt(i);
   if (map.containsKey(c)) {
      map.put(c, map.get(c) + 1);
   } else {
      map.put(c, 1);
   }
}
System.out.println(map);
String=“你好”;
Hashtable map=新的Hashtable();
对于(int i=0;i

输出:
{e=1,o=1,l=2,h=1}

嗯,我不知道您将要检查的字符编码是什么,但是如果您将自己限制为仅使用ASCII字符,则可以使用128个元素的简单数组

public static String uniqueLetters(String s) {
   // storage for ascii characters
   char[] letters = new char[128];

   // mark counts of all letters
   for(int i = 0; i < s.length(); i++) {
      letters[ (int)s.charAt(i) ]++;
   }

   // find unique letters
   String uniques = "";
   for(int i = 0; i < letters.length; i++) {
      if ( letters[i] == 1 ) {
         uniques += Character.toString( (char)letters[i] );
      }
   }

   return uniques;
}
公共静态字符串唯一字母(字符串s){
//ascii字符的存储
字符[]个字母=新字符[128];
//标记所有字母的计数
对于(int i=0;i
嗯,我不知道您将要检查的字符编码是什么,但是如果您将自己限制为仅使用ASCII字符,则可以使用128个元素的简单数组

public static String uniqueLetters(String s) {
   // storage for ascii characters
   char[] letters = new char[128];

   // mark counts of all letters
   for(int i = 0; i < s.length(); i++) {
      letters[ (int)s.charAt(i) ]++;
   }

   // find unique letters
   String uniques = "";
   for(int i = 0; i < letters.length; i++) {
      if ( letters[i] == 1 ) {
         uniques += Character.toString( (char)letters[i] );
      }
   }

   return uniques;
}
公共静态字符串唯一字母(字符串s){
//ascii字符的存储
字符[]个字母=新字符[128];
//标记所有字母的计数
对于(int i=0;i
只需使用哈希集(使用哈希表,但又如何)。哈希集删除重复项。我为什么要使用它?只需使用哈希集(使用哈希表,但又如何).HashSet删除重复项..我为什么要使用它?非常确定他想要每个字符的计数。我想通过计算每个字符的数量来确定字符串是否唯一character@fscoreregex匹配稍后在输入中再次出现的字符,通过对捕获的字符的前向引用断言,非常确定他想要每个字符的计数字符。我想通过计算每个character@fscore正则表达式匹配稍后在输入中再次出现的字符,由对捕获字符的前向引用断言。这是二次时间。在O(n)中不可能吗@fscore我不这么认为,根据比较的数量。你必须有线性时间和Hashmap吗?@fscore@fscore知识就是力量:@fscore你读过堆栈溢出链接吗?正如上面所说的那样,在这种方法中你没有要处理的同步。所以你应该使用
Hashmap
,因为它性能更好(不必处理同步问题)。这是二次时间..在O(n)中不可能吗@fscore我不这么认为,根据比较的数量。你必须有线性时间和Hashmap吗?@fscore@fscore知识就是力量:@fscore你读过堆栈溢出链接吗?正如上面所说的那样,在这种方法中你没有要处理的同步。所以你应该使用
Hashmap
,因为它性能更好(不必处理同步问题)。+1我有基本相同的想法,但在你比我早1分钟发布后删除=)+1我有基本相同的想法,但在你比我早1分钟发布后删除=)