gpt4 book ai didi

java - 字符串中按字典顺序排列的第 k 个最小字符

转载 作者:行者123 更新时间:2023-11-30 08:04:29 25 4
gpt4 key购买 nike

我有一个用户输入的字符串和一个整数k。如何从输入字符串中获取按字典顺序排列的第 k 个最小字符?

这是我一直在尝试的

static Character find(int K, String s){
SortedSet<Character> ss = new TreeSet<Character>();
for(Character c : s.toCharArray()){
ss.add(c);
}
Iterator it = ss.iterator();
int i=0;
while (it.hasNext()) {
Object element = it.next();
if(i==K-1)
return (Character) element;

}
return null;
}

最佳答案

你的代码没问题,除了一件事:i的处理多变的。您应该在 while 的末尾增加它循环以使其匹配 K - 1 .

还有一种对 java8 更友好的方法来执行相同的操作:

String str = "hello";
int k = 2;

Optional<Character> kth =
Stream.of(str.split(""))
.map(c -> c.charAt(0))
.sorted()
.distinct()
.skip(k - 1)
.findFirst();

System.out.println(kth.isPresent() ? kth.get() : "k too big!"); // h

此代码假设 k是从 1 开始的,并且您在获取第 k 个字符时不考虑重复项。

此外,正如评论中所指出的,您不应该为 Iterator 使用原始类型。考虑将其更改为 Iterator<Character> ,因此您不必强制转换 it.next() 返回的值.

关于java - 字符串中按字典顺序排列的第 k 个最小字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31348216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com