Advertisement
Tark_Wight

Untitled

Jun 30th, 2023
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. // Жаккар
  2.  
  3. #include <iostream>
  4. #include <regex>
  5. #include <algorithm>
  6.  
  7.  
  8. std::string stringNormalization(std::string str) {
  9. const std::regex regexFirst{ R"(_|[^\d\w\s])" };
  10. const std::regex regexSecond{ R"(\b\w{1,3}\b)" };
  11. const std::regex regexThird{ R"(\s{2,})" };
  12.  
  13. str = std::regex_replace(str, regexFirst, "");
  14. str = std::regex_replace(str, regexSecond, "");
  15. str = std::regex_replace(str, regexThird, " ");
  16.  
  17. std::transform(str.begin(), str.end(), str.begin(), ::tolower);
  18.  
  19. str.erase(0, str.find_first_not_of(' '));
  20.  
  21. return str;
  22. }
  23.  
  24.  
  25. double FindC(std::string first, std::string second) {
  26. double counter{};
  27.  
  28. for (int i{}; i < std::min(first.length(), second.length()); ++i) {
  29. if (first[i] == second[i]) {
  30. counter += 1.0;
  31. }
  32. }
  33.  
  34. return counter;
  35. }
  36.  
  37.  
  38. int main() {
  39. std::string inputFirst, inputSecond;
  40. std::getline(std::cin, inputFirst);
  41. std::getline(std::cin, inputSecond);
  42.  
  43. inputFirst = stringNormalization(inputFirst);
  44. inputSecond = stringNormalization(inputSecond);
  45.  
  46. double c = FindC(inputFirst, inputSecond);
  47. double result = c / (inputFirst.length() + inputSecond.length() - c);
  48.  
  49. std::cout << result << std::endl;
  50.  
  51. return 0;
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement