CS-OA cs-vo Faang

Oracle Interview Challenge: Detecting and Fixing Duplicate Text Errors in Your Manuscript – 重复文本检测与修复:甲骨文最新面试题详解 – 面试代面 – interview proxy – VO support

在本文中,我们将深入探讨一款源自甲骨文最新面试中的技术题目。题目要求检测并修复由于多次误按“粘贴”键而导致的文本重复问题。这道题不仅考察了对字符串处理的掌握,还涉及到对算法优化和边界情况的细致考量。通过模拟面试场景,我将为你详细解构解题思路,帮助你在未来的技术面试中表现得更为出色。

Description

Background

Congratulations! Your next best-selling novel is finally finished. You cut/paste text fragments from your various notes to build the final manuscript. But you sure are a terrible typist! Often you press the "paste" key multiple times by mistake. You'd better fix those errors before sending it off to the publisher. Fortunately, you can code better than you can type.

Kata Task

Detect, and correct accidental cut/paste errors in the given text!

Example

What you did

(The spaces in the text are shown below as _ for more clarity).

  1. Here_is_some paste
  2. _piece_of_text paste x 2
  3. that paste
  4. was paste x 2
  5. _accidentally paste
  6. _double paste x 4
  7. _pasted. paste

The result

Here is some piece of text piece of text that was accidentally double double double double pasted.

The corrected result

Here is some piece of text that was accidentally double pasted.

Notes

  • words are groups of alphabetic characters.
  • Non-alphabetic characters are considered to be punctuation and spaces (there is no distinction).
  • Repeated letters within words are not errors -- address is not meant to be adres.
  • The cutting never breaks words words apart.
  • Fragments of only punctuation and/or spaces are never double-pasted:
    • Repeated punctuation is possible -- Hey!!! is not meant to be Hey!.
    • Repeated spaces are possible -- abc__def is not meant to be abc_def.
  • Only detect adjacent double pasting. We don’t care if the same cut text might be elsewhere.
  • Your code must treat only first repetitions as double pastes.
  • You want to remove the longest repetitions of the shortest sequences (e.g., double in the example, not double double).
  • Pasting occurs strictly left-to-right, only appending to your current text.

面试题描述:

背景: 恭喜你!你终于完成了下一本畅销小说的终稿。你通过剪切/粘贴各类笔记中的文本片段,最终完成了这份手稿。不过你的打字水平实在是太糟糕了!你常常会多次按下“粘贴”键,造成文本重复错误。在将手稿提交给出版社之前,你需要修复这些错误。不过,幸好你的编程水平远远超过了打字水平。

题目任务: 检测并修复给定文本中由于意外的剪切/粘贴错误而导致的文本重复问题!

示例:

你所做的操作 (为了更清晰地展示文本中的空格,下方用 _ 代替空格)。

Here_is_some paste
_piece_of_text paste x 2
that paste
was paste x 2
_accidentally paste
_double paste x 4
_pasted. paste

结果:

Here is some piece of text piece of text that was accidentally double double double double pasted.

修复后的结果:

Here is some piece of text that was accidentally double pasted.

注意事项:

  • 单词是由字母字符组成的字母组。
  • 非字母字符被认为是标点符号和空格(两者无区别)。
  • 单词内的重复字母不视为错误——如 address 不应变为 adres。
  • 剪切文本不会将单词分开。
  • 仅包含标点符号和/或空格的片段不会被双重粘贴:
    • 重复的标点符号是可能的——如 Hey!!! 不应变为 Hey!。
    • 重复的空格是可能的——如 abc__def 不应变为 abc_def。
  • 仅检测相邻的双重粘贴。我们不关心相同的剪切文本是否可能出现在其他地方。
  • 你的代码必须仅将首次重复视为双重粘贴。
  • 你要移除最短序列的最长重复部分(例如,例子中的 double,而不是 double double)。
  • 粘贴严格按照从左到右的顺序进行,仅附加到当前文本上。

Tricky Examples:

InputOutputNotes
A_X_A_X_O_X_O_XA_X_O_XCorrect (finds the first repeat)
A_X_A_X_O_X_O_XA_X_A_X_O_X_XWrong
A_A_B_A_A_B_A_B_A_B_Correct (finds the first repeat, not the bigger one)
A_A_B_A_A_B_A_A_B_Wrong

在这次甲骨文的技术面试中,面试官向候选人展示了一段存在多次误按粘贴键导致的文本,要求候选人检测并修复这些重复内容。

面试官: "你有一段文本,由于多次误按粘贴键,导致某些片段被重复粘贴。你需要编写一个程序来检测并修复这些错误。"

候选人: "好的,我理解这个任务。首先,我会遍历整个文本,寻找相邻的重复片段,并将这些重复片段缩减为单一片段。为了确保只检测第一次重复,我会记录下每个片段首次出现的位置,并在之后的粘贴中进行比较。"

面试官: "很好,那你打算如何处理单词之间的空格和标点符号?"

候选人: "标点符号和空格应该视为文本的一部分,不需要特别处理。我会重点关注字母字符的重复。如果在连续的相同片段中找到重复,我会将其视为双重粘贴,并将它们缩减为一个片段。"

面试官: "听起来不错,但如果剪切的文本中只有标点符号或空格呢?你如何区分这些情况?"

候选人: "这是个好问题。根据题目描述,仅由标点符号和空格组成的片段不会被认为是重复粘贴。所以我的程序只会在检测到字母字符重复时才进行修复,对于标点符号和空格不做处理。"

面试官: "你的算法会如何处理大段重复的文本,比如连续多次重复相同片段的情况?"

候选人: "我的计划是优先检测最短序列的最长重复部分,也就是处理每一个重复片段。然后,我会从第一个重复片段开始,逐步缩减它们,直到最终的文本中没有多余的重复片段为止。"

In this Oracle interview, I demonstrated my understanding of common algorithmic problems and my problem-solving abilities. Each problem presented different challenges, but all could be solved through logical algorithm strategies.

If you need more interview support or interview proxy practice, feel free to contact us. We offer comprehensive interview support services to help you successfully land a job at your dream company.

如果您需要面试辅助或面试代面服务,帮助您进入梦想中的大厂,请随时联系我

Leave a Reply

Your email address will not be published. Required fields are marked *