Easy O(1) C++ solution with explanation.
Consider the testcase startTime = \'12:01\' and  finishTIme = \'13:44\'\n\n\n     ceil                  floor  \n     |->                     <-|\n\t|---|---|--
Consider the testcase `startTime = \'12:01\'` and  `finishTIme = \'13:44\'`\n\n```\n     ceil                  floor  \n     |->                     <-|\n\t|---|---|---|---|---|---|---|---|\n\t|               |               |\n\t12:00           13:00           14:00\n```\n\n\n\nSolution:\n- Convert `startTime` and `finishTime` to minutes\n\n- find the ceil of `startTime` to get the beginning of the first round.\n\n   `(start + 14) / 15)`  \n   Here we add 14 to get to the first round played.\n   `HH:00`, `HH:15`, `HH:30` and `HH:45` will stay in the same round while all other cases will skip the incomplete first round.\n\n- find the floor of `finishTime` to get the end of the last round in the given range.\n\n\t`(finish / 15)`\n\n- Their difference gives the number of  rounds played.\n\n\n\nSubmission:\n\n```\nclass Solution {\n    public:\n        int numberOfRounds(string s, string f) {\n            \n\t\tint start = 60 * stoi(s.substr(0,2)) + stoi(s.substr(3));\n\t\tint finish = 60 * stoi(f.substr(0,2)) + stoi(f.substr(3));\n\n\t\tif (start > finish)\n\t\t\tfinish += 24 * 60;\n\n\t\treturn max(0, (finish / 15) - (start + 14) / 15);\n            \n        }\n    };\n```\n
[]