import java.util.Scanner; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); System.out.println(getResult(s)); } public static String getResult(String s) { Pattern reg = Pattern.compile("^(01)+0$"); int maxLen = 0; String ans = "-1"; StringBuilder sb = new StringBuilder(); for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); if (c == '0') { if (sb.length() > 0 && sb.charAt(sb.length() - 1) == '0') { if (reg.matcher(sb.toString()).find() && sb.length() > maxLen) { maxLen = sb.length(); ans = sb.toString(); } sb = new StringBuilder(); } } sb.append(c); } if (sb.length() > 0) { if (reg.matcher(sb.toString()).find() && sb.length() > maxLen) { return sb.toString(); } } return ans; } }翻译成C++
时间: 2024-04-15 08:32:06 浏览: 19
以下是将给定的 Java 代码翻译为等效的 C++ 代码:
```cpp
#include <iostream>
#include <regex>
#include <string>
std::string getResult(const std::string& s) {
std::regex reg("^(01)+0$");
int maxLen = 0;
std::string ans = "-1";
std::string temp;
for (char c : s) {
if (c == '0') {
if (!temp.empty() && temp.back() == '0') {
if (std::regex_search(temp, reg) && temp.length() > maxLen) {
maxLen = temp.length();
ans = temp;
}
temp.clear();
}
}
temp += c;
}
if (!temp.empty()) {
if (std::regex_search(temp, reg) && temp.length() > maxLen) {
return temp;
}
}
return ans;
}
int main() {
std::string s;
std::getline(std::cin, s);
std::cout << getResult(s) << std::endl;
return 0;
}
```
这段代码使用了 `<regex>` 头文件中的正则表达式功能来匹配字符串。它首先定义了一个正则表达式模式 `^(01)+0$`,然后使用 `std::regex_search()` 函数来检查字符串是否符合该模式。
请注意,在 C++ 中,我们使用 `std::getline(std::cin, s)` 来读取整行输入。如果您需要逐个字符地读取输入,请使用 `std::cin.get()`。
希望这可以帮助您将 Java 代码转换为等效的 C++ 代码。如果有任何疑问,请随时提问。