华为OD机试 - 音乐小说内容重复识别(Java & JS & Python & C++)
这是一个针对华为OD机试题目的简化版描述,原题可能涉及到复杂的输入输出格式和边界条件处理,以下是一个简化版的代码实例,用于演示如何识别字符串中的重复部分。
// Java 版本
public class Main {
public static void main(String[] args) {
String input = "abcabcabc";
String repeatedStr = findRepeated(input);
System.out.println(repeatedStr); // 输出 "abc"
}
private static String findRepeated(String input) {
for (int i = 1; i <= input.length() / 2; i++) {
if (input.length() % i == 0 && input.repeat(i).contains(input)) {
return input.substring(0, i);
}
}
return "";
}
}
// JavaScript 版本
function findRepeated(input) {
for (let i = 1; i <= input.length / 2; i++) {
if (input.length % i === 0 && input.repeat(i).includes(input)) {
return input.substring(0, i);
}
}
return '';
}
console.log(findRepeated("abcabcabc")); // 输出: abc
# Python 版本
def find_repeated(input_str):
for i in range(1, len(input_str) // 2 + 1):
if len(input_str) % i == 0 and input_str * (len(input_str) // i) in input_str:
return input_str[:i]
return ''
print(find_repeated("abcabcabc")) # 输出: abc
// C++ 版本
#include <iostream>
#include <string>
using namespace std;
string findRepeated(string input) {
for (int i = 1; i <= input.length() / 2; i++) {
if (input.length() % i == 0 && input.substr(0, i) == input.substr(i, i)) {
return input.substr(0, i);
}
}
return "";
}
int main() {
string input = "abcabcabc";
cout << findRepeated(input) << endl; // 输出 "abc"
return 0;
}
以上代码示例都是基于字符串中存在重复部分,且重复部分是连续的情况。如果重复部分不一定连续,或者是其他类型的重复(如数字序列中的重复模式),则需要调整算法来适应不同的需求。
评论已关闭