diff --git a/Hackerrank/Data_Structures/Left_Rotation.cpp b/Hackerrank/Data_Structures/Left_Rotation.cpp new file mode 100644 index 0000000..a95480d --- /dev/null +++ b/Hackerrank/Data_Structures/Left_Rotation.cpp @@ -0,0 +1,67 @@ +/* Solution of the HackerRank Problem 'Left Rotation' + https://www.hackerrank.com/challenges/array-left-rotation/problem */ + +#include +using namespace std; + +vector split_string(string); + +int main() +{ + string nd_temp; + getline(cin, nd_temp); + + vector nd = split_string(nd_temp); + + int n = stoi(nd[0]); + + int d = stoi(nd[1]); + + string a_temp_temp; + getline(cin, a_temp_temp); + + vector a_temp = split_string(a_temp_temp); + + vector a(n); + + for (int i = 0; i < n; i++) { + int a_item = stoi(a_temp[i]); + + a[i] = a_item; + } + rotate(a.begin(), a.begin()+d, a.end()); + for(int i=0;i split_string(string input_string) { + string::iterator new_end = unique(input_string.begin(), input_string.end(), [] (const char &x, const char &y) { + return x == y and x == ' '; + }); + + input_string.erase(new_end, input_string.end()); + + while (input_string[input_string.length() - 1] == ' ') { + input_string.pop_back(); + } + + vector splits; + char delimiter = ' '; + + size_t i = 0; + size_t pos = input_string.find(delimiter); + + while (pos != string::npos) { + splits.push_back(input_string.substr(i, pos - i)); + + i = pos + 1; + pos = input_string.find(delimiter, i); + } + + splits.push_back(input_string.substr(i, min(pos, input_string.length()) - i + 1)); + + return splits; +} +