gpt4 book ai didi

java - 字符和数字交替出现的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 07:40:07 26 4
gpt4 key购买 nike

我被要求解决这个问题。我对如何实现它只有一点点的想法,而且我对编程和其他东西都很陌生,很想听听您对此的评论。

假设给定一个“abc1234defgh567jk89”形式的字符串,我必须创建一个新字符串“a1b2c3d5e6f7j8k9”。

请注意,存在相应的 [digits] 和 [characters] 组,并且由于一种类型可能比另一种类型多,因此输出仅具有匹配序列并忽略额外的数字或字符,在本例中为 '4' & 'g' & 'h'。

我知道我必须使用 2 组队列来存储这两种类型的元素,但我不知道如何从这里继续。

如果您能分享伪代码或 Java(最好是)版本,我将不胜感激,因为我现在正在学习这种语言。

谢谢。

最佳答案

伪代码:

Queue letterQueue;
Queue numberQueue;

for (every character in the string) {
if (it's a letter) {
if (numberQueue is not empty) {
add the letters alternating into the buffer (stringbuilder), and purge buffers
}
add newest letter to letterqueue
}
if (it's a number) {
add newest letter to numberqueue
}
}
add any remaining unprocessed letters to the queue (this will happen most of the time)

return contents of string buffer

您将需要:

代码:

import java.util.LinkedList;
import java.util.Queue;

public class StringTest {
private static String str ="abc1234defgh567jk89";

private static String reorganize(String str) {
Queue<Character> letterQueue = new LinkedList<>();
Queue<Character> numberQueue = new LinkedList<>();

StringBuilder s = new StringBuilder();

for (char c : str.toCharArray()) {
if(Character.isLetter(c)) {
if (!numberQueue.isEmpty()) processQueues(letterQueue, numberQueue, s);
letterQueue.offer(c);
} else if(Character.isDigit(c)) {
numberQueue.offer(c);
}
}

processQueues(letterQueue, numberQueue, s);

return s.toString();
}

private static void processQueues(Queue<Character> letterQueue, Queue<Character> numberQueue, StringBuilder s) {
while(!letterQueue.isEmpty() && !numberQueue.isEmpty()) {
s.append(letterQueue.poll());
s.append(numberQueue.poll());
}
letterQueue.clear();
numberQueue.clear();
}

public static void main(String... args) {
System.out.println(reorganize(str));
}
}

关于java - 字符和数字交替出现的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16195467/

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