您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在 java 中查找字符串中的第一个非重复字符?

在 java 中查找字符串中的第一个非重复字符?

有多种方法可以找到它。 他们之中有一些是:

使用LinkedHashMap 使用 indexOf 和 lastIndexOf 方法

面试问题之一是“你将如何在 String 中找到第一个非重复字符。” 例如: 如果输入字符串是“analogy”,那么程序应该返回’n’ 如果输入字符串是“easyest”,那么程序应该返回’a’ 第一种方法: 我们将使用 LinkedHashMap 在 String 中查找第一个非重复字符。

Algorithm: 循环遍历字符串时获取字符 将此字符放入 LinkedHashMap 中并计数。如果字符已经存在,则将计数增加 1。 迭代时从 LinkedHashMap 获取计数。如果计数为 1,则返回该字符,因为 LinkedHashMap 维护插入顺序。 程序:

package org.arpit.java2blog.algo;

import java.text.*;
import java.util.*;
import java.util.Map.Entry;

public class GetFirstNonRepeatingCharacterMain {
 public static void main(String[] args) {
  System.out
    .println("First non repeated character for String analogy is : "
      + getNonRepeatedCharacter("analogy"));
  System.out
    .println("First non repeated character for String easiest is : "
      + getNonRepeatedCharacter("easiest"));
 }

 public static Character getNonRepeatedCharacter(String str) {
  Map<Character, Integer> countCharacters = new LinkedHashMap<Character, Integer>();
  for (int i = 0; i < str.length() - 1; i++) {
   Character c = str.charAt(i);
   if (!countCharacters.containsKey(c)) {
    countCharacters.put(c, 1);
   } else {
    countCharacters.put(c, countCharacters.get(c) + 1);
   }
  }
  // As LinkedHashMap maintains insertion order, first character with
  // count 1 should return first non repeated character
  for (Entry<Character, Integer> e : countCharacters.entrySet()) {
   if (e.getValue() == 1)
    return e.getKey();

  }
  return null;

 }
}

当你运行上面的程序时,你会得到以下输出

First non repeated character for String analogy is : n
First non repeated character for String easiest is : a

第二种方法: 算法: 遍历字符串的每个字符。 如果 lastIndexOf 和 indexOf 返回相同的值,则它是字符串中的第一个非重复字符。 程序:

package org.arpit.java2blog.algo
public class GetFirstNonRepeatingCharacterMain
{
 public static void main(String[] args)
 {
        System.out.println("First non repeated character for String analogy is : "+getNonRepeatedCharacter("analogy"));
        System.out.println("First non repeated character for String easiest is : "+getNonRepeatedCharacter("easiest"));
 }
 public static Character getNonRepeatedCharacter(String str)
 {     char charaaray[]=str.tocharArray();
       for (int i=0; i<str.length();i++)
      {
          if (str.lastIndexOf(charaaray[i]) == str.indexOf(charaaray[i]))
               return charaaray[i];
      }
  return null;
 }
}

当你运行上面的程序时,你会得到以下输出

First non repeated character for String analogy is : n
First non repeated character for String easiest is : a
java 2022/1/1 18:26:40 有462人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶