The method to reverse a string is easy:
1: void reverseWord(char*& word, int len) {
2: for (int i = 0; i < len / 2; i++) {
3: char temp = word[i];
4: char temp2 = word[len - i - 1];
5: *(word +i) = temp2; 6: word[len - i - 1] = temp; 7: } 8: }So we could use the above function to reverse the order of words in a sentence and also the letters in each word:
1: string s = "This is a test run";
2: char* str = const_cast<char*>(s.c_str());
3: int size = s.size();
4: cout << "Initial string is: ";
5: for (int i = 0; i < size; i++)
6: cout << str[i]; 7: cout << endl; 8: reverseWord(str, size);9: cout << "Whole string reversed is: ";
10: for (int i = 0; i < size; i++)
11: cout << str[i]; 12: cout << endl;13: // do stuff here
14: int k = 0;
15: int start = 0;
16: char* tmp = str;
17: while (k <= size) {
18: if (str[k] == ' ' || str[k] == '\0') {
19: reverseWord(tmp, k - start); 20: tmp = str + k + 1; 21: start = k + 1; 22: } 23: ++k; 24: }25: //
26: cout << "After processing, string is: ";
27: for (int i = 0; i < size; i++)
28: cout << str[i]; 29: cout << endl;The complexity is... O(n) ?

No comments:
Post a Comment