fork download
  1. #include <iostream>
  2. #include <string>
  3.  
  4. bool hasChar(const char* s, char c)
  5. {
  6. if (*s == '\0') {
  7. return false;
  8. }
  9. if (*s == c) {
  10. return true;
  11. }
  12. return hasChar(s + 1, c);
  13. }
  14.  
  15. bool equalsChar(const char* strA, const char* strB, char ch)
  16. {
  17. if (*strA == '\0') {
  18. return !hasChar(strB, ch);
  19. } else if (*strB == '\0') {
  20. return !hasChar(strA, ch);
  21. }
  22. if (*strA != *strB && (*strA == ch || *strB == ch)) {
  23. return false;
  24. }
  25. return equalsChar(strA + 1, strB + 1, ch);
  26. }
  27.  
  28. bool equalsChar(const std::string& strA, const std::string& strB, char ch){
  29. return equalsChar(strA.c_str(), strB.c_str(), ch);
  30. }
  31.  
  32. void Test(const std::string& s1, const std::string& s2, char c, bool expected)
  33. {
  34. std::cout << s1 << (expected ? " == " : " != ") << s2
  35. << (expected == equalsChar(s1, s2, c) ? " OK" : " KO") << std::endl;
  36. }
  37.  
  38. int main()
  39. {
  40. Test("X", "X", 'X', true);
  41. Test("aaaXaaaX", "abcXcbaX", 'X', true);
  42. Test("XaXbXcX", "XtXoXpXdef", 'X', true);
  43. Test("XaXbXcX", "XtXoXpXdXf", 'X', false);
  44. Test("XXXX", "XX", 'X', false);
  45. Test("aXaXbXcX", "XtXoXpX", 'X', false);
  46. }
Success #stdin #stdout 0s 4384KB
stdin
Standard input is empty
stdout
X == X OK
aaaXaaaX == abcXcbaX OK
XaXbXcX == XtXoXpXdef OK
XaXbXcX != XtXoXpXdXf OK
XXXX != XX OK
aXaXbXcX != XtXoXpX OK