java - 字符串中的最后一个重复字符

标签 java collections

我正在寻找一种解决方案,以找到字符串中最后一个重复的字符,该字符表示“你今天过得怎么样”,它应该给出 y 作为答案。我曾尝试使用 Linked Hash Map 来获取有序的插入,但我得到的 d 是最后一个重复的。

String testString  =  "how are you doing today";

    char[] testStringArray = testString.toCharArray();
    Map<Character,Integer> map = new LinkedHashMap<>();

    for( char i : testStringArray) {
     if (!(i==' ')) {
    if(map.containsKey(i) ) {
        map.put(i, map.get(i)+1);
    } else {
        map.put(i, 1);
    }
     }
    }

    System.out.println(map);

    List<Entry<Character, Integer>> list = new ArrayList<>(map.entrySet());
    ListIterator<Entry<Character, Integer>> it = list.listIterator(list.size());    

    while(it.hasPrevious()) {
        if(it.previous().getValue() > 1)
            System.out.println(it.previous().getKey());


    }
}

感谢您的帮助。

最佳答案

此代码从最后一个字符开始扫描,并检查它是否存在于第一个字符之前的剩余子字符串中:

String str = "how are you doing today";
int len = str.length();
int i = len - 1;
for (; i >= 1; i--) {
    if (str.substring(0, i).contains(str.charAt(i) + "")) {
        break;
    }
}
if (i == 0) {
    System.out.println("no repeating character");
} else
    System.out.println(str.charAt(i));

关于java - 字符串中的最后一个重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38457233/

相关文章:

java - 是否有任何原因 EnumMap 和 EnumSet 不可导航

java - 如何找到arrayList中的第n个索引

java - logcat 错误 : E/ExtMediaPlayer-JNI: env->IsInstanceOf fails

java - 在 Eclipse 中生成 java 代理类

java - 在 Eclipse Subversive 中更改项目 SVN 地址

java - 为什么我的 `unmodifiableList` 是可修改的?

java - 有什么办法可以将 "CAST"ArrayList转成CopyOnWriteArrayList

java - JAVA中读取URL对象有什么用

java - 同级项目中的 Jetty 资源库

java - 使用 Java 8 中的方法引用获取 Collectors toMap 方法中的流对象