输入任意两个字符串S1,S2,输出两个字符串的最长公共前缀,如果没有输出空字符串
时间: 2024-04-09 22:32:47 浏览: 81
好的,我明白了。让我来帮你解答这个问题。
首先,我们可以从两个字符串的第一个字符开始逐个比较它们的字符,直到找到不相同的字符或者其中一个字符串结束。这个过程中,我们可以将相同的字符添加到一个结果字符串中,直到找到不相同的字符为止。
以下是一个示例的Python代码实现:
```python
def longest_common_prefix(s1, s2):
prefix = ""
i = 0
while i < len(s1) and i < len(s2) and s1[i] == s2[i]:
prefix += s1[i]
i += 1
return prefix
# 测试样例
s1 = input("请输入字符串S1:")
s2 = input("请输入字符串S2:")
result = longest_common_prefix(s1, s2)
print("最长公共前缀为:", result)
```
你可以输入两个字符串S1和S2,然后程序将输出它们的最长公共前缀。
希望能帮到你!如果有任何其他问题,请随时提问。
相关问题
C++输入任意两个字符串S1,S2,输出两个字符串的最长公共前缀,如果没有输出空字符串
好的,以下是用 C++ 编写的代码来实现你的需求:
```cpp
#include <iostream>
#include <string>
using namespace std;
string longestCommonPrefix(string s1, string s2) {
string result = "";
int i = 0;
while (i < s1.length() && i < s2.length() && s1[i] == s2[i]) {
result += s1[i];
i++;
}
return result;
}
int main() {
string s1, s2;
cout << "请输入字符串S1: ";
cin >> s1;
cout << "请输入字符串S2: ";
cin >> s2;
string commonPrefix = longestCommonPrefix(s1, s2);
if (commonPrefix.empty()) {
cout << "两个字符串没有最长公共前缀。" << endl;
} else {
cout << "最长公共前缀为: " << commonPrefix << endl;
}
return 0;
}
```
你可以将以上代码保存为 `.cpp` 文件,然后使用 C++ 编译器进行编译运行。
请注意,我只提供了一个简单的实现,可能并不是最优的解决方案。在实际应用中,你可能需要考虑更多的边界情况和优化。
C++不用自定义函数实现输入任意两个字符串S1,S2,输出两个字符串的最长公共前缀,如果没有输出空字符串
要在C++中实现输入任意两个字符串S1S2,并输出它们的最长公共前缀,可以按照以下步骤进行:
1. 首先,使用cin分别输入字符串S1和S2。
```cpp
stdstring S1, S2;
std::cin >> S1 >> S2;
```
2. 接下来,定义一个变量prefix并初始化为空字符串,用于保存最长公共前缀。
```cpp
std::string prefix = "";
```
3. 使用for循环遍历字符串S1和S2的字符,比较对应位置上的字符是否相等。
```cpp
for (int i = 0; i < S1.length() && i < S2.length(); i++) {
if (S1[i] == S2[i]) {
prefix += S1[i]; // 将相同的字符添加到最长公共前缀中
} else {
break; // 遇到不相等的字符时结束循环
}
}
```
4. 最后,判断最长公共前缀的长度是否为0,如果是,则输出空字符串;否则,输出最长公共前缀。
```cpp
if (prefix.length() == 0) {
std::cout << "空字符串" << std::endl;
} else {
std::cout << "最长公共前缀: " << prefix << std::endl;
}
```
完整的代码示例:
```cpp
#include <iostream>
#include <string>
int main() {
std::string S1, S2;
std::cin >> S1 >> S2;
std::string prefix = "";
for (int i = 0; i < S1.length() && i < S2.length(); i++) {
if (S1[i] == S2[i]) {
prefix += S1[i];
} else {
break;
}
}
if (prefix.length() == 0) {
std::cout << "空字符串" << std::endl;
} else {
std::cout << "最长公共前缀: " << prefix << std::endl;
}
return 0;
}
```
注意:以上代码假设输入的字符串不包含空格。如果需要处理含有空格的字符串,可以使用std::getline函数进行输入。
阅读全文