gpt4 book ai didi

java - 对混合数据列表进行排序?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:34:57 24 4
gpt4 key购买 nike

我今天有一个面试,我被要求对一个包含字符串和整数的列表进行排序。就像这样

输入:

汽车巴士4 -5 苹果3 -1

输出:

苹果巴士-5 -1车3 4

一开始我被卡住了,因为我从来没有见过这样的东西,但我试图做的是创建 2 个子列表,一个包含字符串,另一个包含 int。我这样做了,但时间已经到了我无法完成。

我还卡在了我试图遍历列表并检查它的字符串是否比将元素添加到子列表 1 以及它的 int 是否比将元素添加到子列表 2 的部分。我卡在这里了因为我不知道怎么能我检查元素是字符串还是整数。

如果我在错误的部分或其他地方发布了这个问题,也很抱歉。请随意将这个问题移到正确的部分。

谢谢

最佳答案

我会使用两个列表,对它们进行排序,但你必须记住原始顺序,LinkedList<Boolean>足以完成该任务。

public static String sortString(String input) {
Scanner s = new Scanner(input);

LinkedList<String> strings = new LinkedList<String>();
LinkedList<Integer> integers = new LinkedList<Integer>();
LinkedList<Boolean> types = new LinkedList<Boolean>();

while(s.hasNext()) {
String nextToken = s.next();
try {
int nextInteger = Integer.parseInt(nextToken);
integers.add(nextInteger);
types.add(true);
} catch(NumberFormatException e) {
strings.add(nextToken);
types.add(false);
}
}

Collections.sort(strings);
Collections.sort(integers);

StringBuilder builder = new StringBuilder();

Iterator<Boolean> iter = types.iterator();

while(iter.hasNext()) {
boolean currType = iter.next();
if (currType) {
builder.append(integers.remove(0));
} else {
builder.append(strings.remove(0));
}
if (iter.hasNext()) builder.append(" ");
}

return builder.toString();
}

关于java - 对混合数据列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13462574/

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